欢迎来到天天文库
浏览记录
ID:40098897
大小:872.00 KB
页数:144页
时间:2019-07-21
《java基础 消息、继承与多态》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第5章消息、继承与多态5.1消息5.2访问控制5.3多态机制5.4继承机制5.5抽象类、接口与包5.1消息5.1.1消息的概念在日常生活中,人与人之间要进行交流,某人可以向别人提供服务,例如,他可以开汽车,教学生学习等;同时他也需要别人为他提供服务,例如,他要吃饭但不可能自己去种地,要穿衣不可能自己去织布,他必须请求别人帮助;同样,他什么时间讲课,也必须得到他人的请求或命令。“请求”或“命令”便是人与人进行交流的手段。在面向对象的系统中,把“请求”或“命令”抽象成“消息”,对象之间的联系是通过消息传递来实现的。当系统中的其
2、他对象请求这个对象执行某个服务时,它就响应这个请求,完成指定的服务。通常,我们把发送消息的对象称为发送者,把接收消息的对象称为接收者。对象间的联系,只能通过消息传递来进行。对象也只有在收到消息时,才被激活,去完成消息要求的功能。消息就是向对象发出服务请求,是对数据成员和成员方法的引用。因此,它应该含有下述信息:提供服务的对象标识——对象名、服务标识——方法名、输入信息——实际参数、回答信息——返回值或操作结果。消息具有三个性质:(1)同一对象可接收不同形式的多个消息,产生不同的响应。(2)相同形式的消息可以发送给不同对象,
3、所做出的响应可以是截然不同的。(3)消息的发送可以不考虑具体的接收者,对象可以响应消息,也可以对消息不予理会,对消息的响应并不是必须的。5.1.2公有消息和私有消息在面向对象系统中,消息分为两类:公有消息和私有消息。当有一批消息同属于一个对象时,由外界对象直接发送给这个对象的消息称为公有消息;对象自己发送给本身的消息称为私有消息。私有消息对外是不开放的,外界不必了解它。外界对象只能向此对象发送公有消息,而不能发送私有消息,私有消息是由对象自身发送的。5.1.3特定于对象的消息特定于对象的消息是指将所有能支持此对象可接受消息
4、的方法集中在一起,形成一个大消息,称为特定于对象的消息。这些消息让对象执行这个方法而不管它可能做什么及怎么做。特定于对象的消息可分为三种类型:(1)可以返回对象内部状态的消息。(2)可以改变对象内部状态的消息。(3)可以做一些特定操作,改变系统状态的消息。【示例程序c5_1.java】classstudent{publicStringname;publiccharsex;publicintno;publicintage;student(intcno,Stringcname,charcsex,intcage){name=cn
5、ame;sex=csex;no=cno;age=cage;}publicvoidshowNo(){System.out.println("No:"+no);}publicvoidshowName(){System.out.println("Name:"+name);}publicvoidshowSex(){System.out.println("Sex:"+sex);}publicvoidshowAge(){System.out.println("age:"+age);}}classstudentScore{private
6、intno;privatedoublescore;publicvoidsendScore(intcno,doublecscore){//下面两句是对象发送给自身的消息,要求给自己的数据成员赋值,//这是一种私有消息,外界是不知道的。no=cno;score=cscore;}voidprintScore(){System.out.println("No:"+no+"score:"+score);}}publicclassc5_1{publicstaticvoidmain(String[]args){intm;//下面两句发送
7、new消息给类student,要求创建类student的对象st1,st2studentst1=newstudent(101,"zhangli",'F',18);studentst2=newstudent(102,"hongbing",'M',17);//发送new消息给类studentScore,要求创建类studentScore的对象sc1,sc2studentScoresc1=newstudentScore();studentScoresc2=newstudentScore();/*向对象st1发送显示学号、名字、年
8、龄的消息。这些消息都是公有消息,形成了同一对象可接收不同形式的多个消息,产生不同的响应。*/st1.showNo();//显示学号的消息st1.showName();//显示姓名的消息st1.showAge();//显示年龄的消息st1.age=20;//修改对象数据成员的消息,修改st1的年龄。m=s
此文档下载收益归作者所有