面向对象高级特性一_第1页
面向对象高级特性一_第2页
面向对象高级特性一_第3页
面向对象高级特性一_第4页
面向对象高级特性一_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

面向对象高级特性(一)内容简介封装继承多态什么是封装

java语言中,对象就是对一组变量和相关方法的封装,其中变量表明了对象的状态,方法表明了对象具有的行为。通过对象的封装,实现了模块化和信息隐藏。通过对类的成员施以一定的访问权限,实现了类中成员的信息隐藏。

继承性是面向对象程序设计语言的另一基本特征,通过继承可以实现代码的复用。继承而得到的类为子类,被继承的类为父类(超类),父类包括所有直接或间接被继承的类。子类可继承父类中的变量及方法,也可定义其自身特有的变量及方法。

Java中不支持多重继承。什么是继承如何实现继承

1)通过在类的声明中加入extends子句来创建一个类的子类:

classSubClassextendsSuperClass{……}2)如果缺省extends子句,则该类为java.lang.Object的子类,Object类是所有类的父类.3)

Java是单继承:(下面错误继承)

…extendsSuperClassA,SuperClassB一个很好的经验:“B是一个A吗?”如果是则让B做A的子类.常犯的错误A有一个B吗?例如让汽车轮子成为汽车的子类是错误的何时选择继承继承性子类可继承父类方法和变量.

同一个包中不同包中的子类privatedefault★protected★ ★public★ ★变量隐藏及方法重写原则变量隐藏原则:

子类中变量名与继承自父类的变量名相同时,则继承自父类的变量将被隐藏。2)方法重写原则:a)重写后的方法不能比被重写的方法有更严格的访问权限(可以相同)。

b)改写后的方法不能比重写的方法产生更多的例外。

变量隐藏示例classCar{

intcolor_number;intdoor_number=2;intspeed=100;publicvoidpush_break(){speed=0;}}

classTrash_CarextendsCar{doubleamount;

Stringcolor_number=“四个”;

intspeed=300;publicvoidfill_trash(){…}}变量隐藏即指在子类中重新定义父类中已有的变量;例:方法重写示例classCar{

intcolor_number;intdoor_number;intspeed;publicvoidpush_break(){speed=0;}}

classTrash_CarextendsCar{doubleamount;publicvoidfill_trash(){…}

publicvoidpush_break(){speed=speed–10;}}方法重写即指在子类中重新定义父类中已有的方法;例:多层次继承Java不支持多继承,可多层次继承。构造方法调用在类层次结构中,构造方法以派生的顺序调用,从超类(父类)到子类如右图类的层次结构;创建对象:newSonClass3();则构造方法调用顺序为:Object→SonClass1→SonClass2→SonClass3super关建字作用调用构造方法:super()必须是子类构造函数第一个执行的语句,如果super()没有被用到,每个超类的默认的或无参数的构造函数将被执行。2)调用被隐藏变量及方法:

可通过super关键字调用被隐藏的父类中的变量及方法。super关建字使用格式1)访问父类被隐藏的成员变量,如:

super.variable;

2)调用父类中被重写的方法,如:

super.Method([paramlist]);

3)调用父类的构造函数,如:

super([paramlist]);

1)final在类之前表示该类是最终类,不能再被继承。2)final在方法之前表示该方法是最终方法,该方法不能被任何派生的子类覆盖。3)final在变量之前表示变量的值在初始化之后就不能再改变;相当于定义了一个常量。final关键字上转型对象(上溯)在现实世界中我们说”老虎是哺乳动物”,若哺乳类是老虎类的父类,这样说当然正确,但当你说老虎哺乳动物时,老虎将失掉老虎独有的属性和功能。

如果A类是B类的父类,当我们用子类创建对象,并把这个对象的引用放到父类的对象中时:Aa;Bb=newB();或Aa=newB();a=b;

称父类对象a是子类对象b的上转型对象。

(好比说:老虎是哺乳动物)上转型对象特点上转型对象的实体是子类负责创建的,所以上转型对象失去原对象一此属性和功能。不能操作子类新培的成员变量和方法;可以操作子类继承的变量,也可操作子类继承或重写的方法;3)如果子类重写了父类的某个方法后,当对象的上转型对象调用这个方法时一定是调用了这个重写的方法。注:1)不要将父类创建的对象和子类对象上转型对象混淆;

2)可以将对象的上转型对象再强制转换到一个子类对象,这时,该子类对象又具备了子类所有属生和功能;(即下溯)3)不可以将父类创建的对象的引用赋值给子类声明的对象(不能说”哺乳动物是老虎”);类型提升及强制条件类型自动提升和强制类型转换的条件:创建对象的类之间存在继承关系。什么是多态1我们经常说”哺乳动物有很多种叫声”,如”汪汪”,”喵喵”,”吼”等,这就是叫声的多态。

当一个类有很多子类时,并且这些子类都重写了父类中的某个方法。那么当我们把子类创建的对象的引用放到一个父类的对象中时(即上转型对象),那么这个上转型对象调用这个方法时就具有多种形态,因为子类在重写父类方法时可能生产不同行为。多态就是指父类的某个方法被子类重写时,可以各自产生自己的功能行为。什么是多态(接上)1)多态性中父类一般抽象为一个接口,(有多个实现类实现接口中某个方法)2)java在运行时动态方法调用叫做后期绑定(latebinding)多态示例packagemany;/***动物类,父类.*/publicclassAnimal{ /** *定义叫声方法.被子类重写的方法。 */ publicvoidshout(){

System.out.println("..."); }}多态示例(接上)packagemany;publicclassCatextendsAnimal{ publicvoidshout(){

System.out.println("喵喵..."); }}packagemany;publicclassDogextendsAnimal{ publicvoidshout(){

System.out.println("汪汪..."); }}多态示例(接上)packagemany;publicclassM

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论