版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第5章 继承,第一讲,本章学习目标,理解继承的含义 掌握继承的方法 掌握方法的覆盖 掌握父子类对象的转化 掌握final修饰符的用法 掌握abstract修饰符的用法,本节课内容,继承的定义 属性的继承和隐藏,满足继承关系的例子,class Bus public String number; public String color; public void start() public int station; public void sellTicket() ,class Autocar public String number; public String color; public vo
2、id start() ,例子,继承的定义,面向对象中在已有类的基础上扩展出新类的方式称为继承。继承用于描述两个类之间的“is-a”关系。 扩展出的新类称为子类(次类),被继承的类称为父类(超类)。,继承的语法,修饰符 class 子类名 extends 父类名 类体; 例如:class Apple extends Fruit ,【注】Java只支持单重继承,即只有一个父类的继承关系 示例:SchoolMember.java,要点,在继承中: 子类可以得到父类的属性和方法。 子类可以添加新的属性和方法。 子类可以重新定义父类的属性和方法。 SchoolMember.java,举一反三,定义Sch
3、oolMember的子类Teacher类,该类除了有父类的特征外,还应有主讲课程(teach)属性和访问器方法,同时需要有能够介绍主讲课程的introduce方法。,继承要点: 子类只能继承父类中可访问的属性 父子类在一个包中,子类可以继承父类中的非私有属性 父子类不在一个包中,子类可以继承public类中的,public属性和protected属性,属性的继承与隐藏,属性的继承,父子类在同一个包中 Base.java(5-2) 父子类不在同一个包中 Base.java(5-3) Inh2.java,属性隐藏,子类可以定义与父类同名的属性,称为属性隐藏。即子类重新定义父类的属性。 示例:Tes
4、t.java,要点,调用属性的规则:先在当前类中找,如果没有再到其父类中找,以此类推。 当子类执行继承自父类的操作时,处理的是继承自父类的属性,当子类执行自己定义的方法时,处理的是子类自己重新定义的同名属性。,要点,如果想要调用被隐藏的父类属性,静态属性可以使用“类名.属性名”;非静态属性可以用“super.属性名”,方法的继承与覆盖,方法的继承 方法的继承原则与属性一致 示例Base.java(5-5) Base.java (5-6) Inh5.java,方法的覆盖,在子类中可以定义与父类方法头相同的方法,称为方法的覆盖。 也可以说,通过方法覆盖,子类可以重新定义父类的方法。 示例1:Sch
5、oolMember.java 示例2:Test2.java,要点,方法覆盖:子类中定义与父类中相同方法头的方法。 如果在子类中要调用被覆盖的方法,对于静态方法,可以使用“类名.方法名”调用,对于非静态方法,可以使用“super.方法名”调用,注意要点,子类在重新定义父类中的已有方法时,应保持和父类中该方法相同的方法头,即有完全相同的方法名、返回值类型和参数列表。 方法覆盖时,子类方法不能缩小父类方法的访问权限。比如:父类的方法如果是protected,子类方法只能是protected或者public,举一反三,创建Animal类,有属性name和color。 创建Cat类为Animal的子类,
6、有方法climb。 在main方法里创建Cat对象,name属性设为cat。输出它的名字(cat),调用它的climb方法。,注意,仅当实例方法是可访问时,他才能被覆盖。如果子类中定义的方法在父类中是私有的,那么这个两个方法完全没有关系。 与实例方法一样,静态方法也能被继承。但是静态方法不能被覆盖。如果父类中定义的静态方法在子类中重新被定义,那么定义在父类中的静态方法将被隐藏。可以父类名、静态方法名调 用隐藏的静态方法。,重载与覆盖区别,public class Test public static void main(Stringargs) A a=new A(); a.p(10); a.p
7、(10.0); class B public void p(double i) System.out.println(i*2); class A extens B public void p(double i) System.out.println(i); ,public class Test public static void main(Stringargs) A a=new A(); a.p(10); a.p(10.0); class B public void p(double i) System.out.println(i*2); class A extens B public vo
8、id p(int i) System.out.println(i); ,继承关系中的构造方法,在创建子类对象时,先调用父类构造方法,然后再调用子类构造方法,构成构造方法链 示例:TestConstructor.java 默认情况下,子类调用父类无参的构造方法,示例,public class Faculty extends Employee public static void new main(String args) new Faculty(); public Faculty() system.out.println(4) Performs Facultys tasks); public c
9、lass Employee extends Person public Employee() this(2) Invoke Employees overloaded constructor) system.out.println(3) Performs Employes tasks); ,public Employee(String s) system.out.println(s); public class Person public Person() system.out.println(1) Performs Persons tasks); ,注意:,如果一个类要设计为扩展的,做好提供一
10、个无参构造方法以避免程序设计错误 public class Apple extends Fruit public class Fruit public Fruit(String s) system.out.println(s); ,继承关系中的构造方法,如果父类中只提供有参没有无参的构造方法,则在默认情况下,创建其子类对象会出错。 示例:TestConstructor.java,继承关系中的构造方法,如果希望调用父类有参构造方法,可以借助super完成。 示例:TestConstructor.java,super,在子类中调用父类的属性和方法 super指当前类的父类对象,所以不能在静态方法中
11、使用。 在子类构造方法中指明调用父类的构造方法。 必须写在子类构造方法的第一条。,构造方法使用原则,先调用父类构造方法,再调用子类构造方法 默认调用父类无参构造方法 可用super在子类构造方法中指明调用父类构造方法,总结:this 和super的用法,this代表当前类的对象;super代表当前类的父类对象。 this可以调用当前类当中的其他构造方法,而super可以调用当前类父类中的构造方法。 注意:this和super都不能用在static修饰的方法内;并且this和super不能同时使用,示例,编写圆Circle类的子类圆柱Cylinder。 Circle.java Cylinder.java,final修饰符,final可以修饰属性和局部变量,称为常量,一旦赋值不能修改。 比如:final double PI = 3.14 ; 示例:BlankFinal.java 注意,如果常量类型为引用类型时,只是这个引用值不能改变,并不是引用的对象的属性不能改变。,final修饰符,fin
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 架线维护工岗前测试验证考核试卷含答案
- 期末必考题书面表达专练 课件2022-2023学年人教版英语七年级上册(共23张)
- 七年级语文上册第六单元课外古诗词 夜雨寄北 课件(共21张)
- 2025年出国留学申请时间表
- 2025年内蒙古自治区公需课学习-国家基本公共服务标准1218
- 2026年高校科研管理试题及答案
- 基底节出血的出院指导与随访
- 2026年村卫生室医务人员招聘试题及参考答案
- 2026年四川交通职业技术学院单招职业技能测试题库带答案详解(能力提升)
- 2026年四川现代职业学院单招职业适应性考试题库及完整答案详解
- 正方形复习公开课课件(配相关学案)
- 第四次全国文物普查工作推进情况汇报材料
- 《汽车和挂车光信号装置及系统》(征求意见稿)
- 个人借条模板-电子版
- 2024年江苏农林职业技术学院高职单招(英语/数学/语文)笔试历年参考题库含答案解析
- 职业卫生评价与检测
- 桩基施工危险源辨识表与风险评价表
- word格式模板:离职证明(标准版):免修版模板范本
- 加氢裂化工艺培训
- 春季安全大检查检查表
- 技术交底制度
评论
0/150
提交评论