欢迎来到天天文库
浏览记录
ID:44960945
大小:107.00 KB
页数:23页
时间:2019-11-06
《第6章Java语言的继承与多态》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、第六章Java语言的继承与多态合肥学院计算机系1本章内容6.1继承6.2多态性6.3构造函数的继承与重载6.4Java中的接口6.5Java中的包26.1继承1.继承与派生①继承:在已有类的基础上快速构造出新类的过程;派生:在构造新类的同时并新增新的特性的过程。②基(父)类:被继承特性的类;派生(子)类:在基类的基础上新创建出的类。Point-->Rectangle-->Window-->Dialog③为什么要继承派生:实体之间不仅在横向具有关联特性,而具在纵向也存在继承与派生的特性(遗传与变异);充分利用此特性可快速地构造出新类。3④可行性:实体之间具有自然的相互关联性。
2、⑤目的:对现有系统重用,而且还能扩充和完善现有系统。⑥派生类的定义类的种类class派生类名extends基类名{成员定义;}2.属性的继承与隐蔽属性的继承派生(子)类继承基(父)类非私有属性Ko6.14属性的隐蔽派生(子)类重新定义与从基(父)类那里继承来的属性名(变量名)完全相同的变量,也就是说子类拥有两个变量名完全相同的变量。子类执行从基(父)类那里继承的操作时,处理的是继承父类的变量,子类执行自己定义的操作时,处理的是自己定义的变量ko64,hid53.方法(函数)的继承与覆盖方法的继承派生(子)类继承基(父)类非私有方法ko641方法的覆盖派生(子)类重新定义与从
3、基(父)类那里继承来的方法名完全相同的方法6与属性的隐蔽不同之处:父类的同名变量在子类对象中仍占有空间,而子类同名方法对父类的同名方法覆盖,将清除父类的同名方法占有空间,父类的同名方法在子类对象中不存在。Ko6_54.方法的重载重载函数:类体中“同名”而“不同形参”的成员函数。①作用:实现同种功能而不同的功能实现形式(OOP中的静态多态性)。②调用规则:系统将根据实参与形参的个数或类型相匹配的关系来决定所调用的函数名。7③应用要点:重载函数只是以函数的形参的不同来判断的而不是以函数的返回值或函数形参名的不同来区分的。如下函数不是重载函数定义!intadd(intx,inty
4、)intadd(inta,intb)voidadd(intx,inty)intadd(intx,inty)注意:1>继承与派生时的方法重写权限要求:重写的方法的访问权限不能有比基类更严格的访问权限和定义出更多的例外。2>对象的类型识别:利用instanceof可以识别出对象所属的类型,从而依据不同类型的对象产生不同的行为。85.类体中的this、superthis:它代表当前名,一个类可以通过this变量来获得一个代表它自身的对象变量。用途:1>this(参数)调用本类中另一种形成的构造函数(应该为构造函数中的第一条语句);2>在程序中易产生二义性之处,应使用this来指明
5、当前对象;如果函数的形参与类中的成员数据同名,这时需用this来指明成员变量名9classPointclassCircleextendsPoint{{privateintx,y;privateintradius;publicPoint(intx,inty)publiccircle(intx0,inty0,intr){{this.x=x;super(x0,y0);this.y=y;radius=r;}}publicvoidDraw()publicvoidDraw(){{super.Draw();drawCircle();}}publicPoint(){this(0,0);}}
6、10Superjava中通过super来实现对父类成员的访问,super用来引用当前对象的父类。Super的使用有三种情况:1)访问父类被隐藏的成员变量,如:super.变量;2)调用父类中被重写的方法,如:super.成员函数据名(实参)3)调用父类的构造函数,如:super(参数1,参数2…)调用基类中的某一个构造函数(应该为构造函数中的第一条语句);ko6_3,ko6_411注意:1>子类对象被视为父类的一个对象2>父类对象不能当着是一子类对象3>如果一个方法的形式参数是父类对象,那么调用时可以用子类对象为实在参数4>如果父类对象引用指向实际是一个子类对象,那么父类对
7、象引用可以用强制类型转换成子类对象的引用在实例方法中可以使用this和super,而在类方法中不能使用this和super。126.2多态性多态是指一个程序中同名的不同方法的共存。实现多态手段:函数覆盖、函数重载。在java语言中,多态性体现在两个方面:由方法重载实现的静态多态性(编译时多态)和方法重写实现的动态多态性(运行时多态)。1)编译时多态在编译阶段,具体调用哪个被重载的方法,编译器会根据参数的不同来静态确定调用相应的方法。2)运行时多态由于子类继承了父类所有的属性(私有的除外),所以子类对象可以作为父
此文档下载收益归作者所有