java面向对象程序设计第五章.ppt
《java面向对象程序设计第五章.ppt》由会员分享,可在线阅读,更多相关《java面向对象程序设计第五章.ppt(40页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、Java 初级初级第五章面向对象(中)主要内容主要内容l面向对象的特征l封装l继承l类的多态面向对象的特征面向对象的特征面向对象的特征用面向对象语言例如Java所编的程序就一定是面向对象程序吗?回答是否定的,关键看是否用了面向对象的基本特征。面向对象特征主要有:封装、继承与多态。封装封装的定义封装的定义l概念:利用抽象数据类型将数据和基于数据的操作封装在一起,数据被保存在抽象数据类型内部,系统的其他部分只有通过对象被授权的操作,才能访问这个数据。l意义自定义数据类型更完善类内部实现细节的变化不会影响外部使用类/对象中的内部数据更安全符合“高内聚、低耦合”的软件设计要求一个例子一个例子class
2、FighterPlaneprivateStringname;privateintmissileNum;public voidsetName(String_name)if(_name!=null)name=_name.trim();publicvoidsetNum(int_missileNum)if(_missileNum0)missileNum=_missileNum;publicvoidfire()if(missileNum0)System.out.println(“nowfireamissile!”);elseSystem.out.println(“Nomissileleft!”);/en
3、dclass对象访问控制访问控制体现封装,则需要掌握访问控制public,protected,private,“缺省”的用法。在java中这些修饰符可以修饰的种类有3种:修饰类修饰类的属性成员(域)修饰类的成员方法类前修饰符类属性成员方法public缺省publicABprotectedB或(B+C)B缺省BBprivateDD权限依次增大权限依次增大A:所有类B:包中的类D:D:本类本类C:C:所有子类所有子类E E:包中子类:包中子类访问控制访问控制注意注意l两个类同写在一个文件中,只能有一个类为public;l对象之间方法调用,访问修饰符为protected,应用范围为“B”;l产生对象
4、时,类的构造方法前修饰符为private,则只能在类的内部产生对象,从而引出“单件模式”;l子类继承,当访问修饰符为protected时,应用范围为“BC”。访问控制举例访问控制举例1packagecom.resource;publicclassFighterPlanepublicStringname;publicintmissileNum;publicvoidfire()if(missileNum0)(nowfireamissile!);missileNum-=1;else(Nomissileleft!);packagecom.run;importcom.resource.*;publicc
5、lassRunPlanepublicstaticvoidmain(Stringargs)FighterPlanefp=newFighterPlane();fp.name=苏35;fp.missileNum=6;fp.fire();访问控制举例访问控制举例2packagecom.resource;publicclassFighterPlanepublicstaticStringname=苏35;packagecom.run;importcom.resource.*;publicclassRunPlanepublicstaticvoidmain(Stringargs)System.out.prin
6、tln(FighterPlane.name);访问控制举例访问控制举例3(单件模式)(单件模式)packagecom.resource;publicclassFighterPlaneprivateStringname;privateintmissileNum;private static FighterPlane fp;private FighterPlane(String_n,int_mn)name=_n;missileNum=_mn;publicstaticFighterPlanegetInstance(String_n,int_mn)if(fp=null)fp=newFighterPla
7、ne(_n,_mn);returnfp;publicvoidfire()if(missileNum0)System.out.println(nowfireamissile!);missileNum-=1;elseSystem.out.println(Nomissileleft!);packagecom.run;importcom.resource.*;publicclassRunPlanepublicstaticvoidmain(Stringargs)FighterPlanefp;fp=FighterPlane.getInstance(苏苏35,6);fp.fire();访问控制举例访问控制举
8、例4(演示)(演示)packagecom.resource;publicclassFighterPlaneprotectedStringname;protectedintmissileNum;publicvoidfire()if(missileNum0)System.out.println(fireamissile!);missileNum-=1;elseSystem.out.println(Nomissileleft!);/endclasspackagecom.run;importcom.resource.*;publicclassRunPlaneextendsFighterPlanepri
9、vatevoidinit()name=su35;missileNum=5;publicstaticvoidmain(Stringargs)FighterPlanefp=newFighterPlane();fp.name=“苏35”;/error!fp.missileNum=6;/error!fp.fire();/endclass访问控制举例访问控制举例5classTestprivateintvalue;publicstaticvoidmain(Stringargs)Testt=newTest();System.out.println(t.value);消息消息消息的实质就是引用向对象发出的服务
10、请求,是对数据成员和成员方法的调用,例如fp.name和fp.fire()就是发送消息消息(消息(Cont)能否发送消息取决于:l引用必须引用了特定的对象,否则会在运行时抛出NullPointerException异常。(举个例子)l对象必须定义了相应的属性或方法,否则编译不会通过l被访问的属性或方法必须具有可访问的权限,也就是说和封装的内容相互关联消息(消息(Cont)当fp作为A对象的属性时,A对象就可以向FighterPlane发送消息,控制FighterPlane产生相应的操作。同时,当FighterPlane中也有A对象的引用时,它也可向A对象发送消息,控制A产生相应的操作,它们之间
11、就存在关联关系了图5-5消息(代码示例)消息(代码示例)classFighterPlaneStringname;intmissileNum;publicFighterPlane(String_name,int_missileNum)name=_name;missileNum=_missileNum;publicvoidfire()if(missileNum0)System.out.println(fireamissile!);missileNum-=1;elseSystem.out.println(Nomissileleft!);classAFighterPlanefp;publicA(Fig
12、hterPlanefpp)this.fp=fpp;publicvoidinvoke()/发送消息给FighterPlane的对象System.out.println(fp.name);publicclassRunpublicstaticvoidmain(Stringargs)FighterPlaneftp=newFighterPlane(su35,10);/产生A对象,并将ftp对象引用作为参数传入Aa=newA(ftp);/发送消息,产生调用关系a.invoke();继 承继承继承l通过extends关键字实现;l子类可以从父类继承所有非private的属性和方法作为自己的成员;继承举例继承
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- java 面向 对象 程序设计 第五
限制150内