继承和方法的覆盖.ppt_第1页
继承和方法的覆盖.ppt_第2页
继承和方法的覆盖.ppt_第3页
继承和方法的覆盖.ppt_第4页
继承和方法的覆盖.ppt_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

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

文档简介

1、继承和方法覆盖,生活中的继承 2-1,生活中,继承的例子随处可见,动物,食草动物,食肉动物,谁是父类? 谁是子类? 能说出继承的特点吗?,继承需要符合的关系:is-a,父类更通用、子类更具体,生活中的继承 2-2,子类具有父类的一般特性(包括属性和行为),以及自身特殊的特性,巴士是汽车吗? 卡车是汽车吗? 出租车是汽车吗?,汽车,请问:出租车包含哪些属性和行为呢?,为什么需要继承 4-1,开发计算机教师类,其中教师分为Java教师以及.NET教师,各自的要求如下: Java教师 属性:姓名、所属学校 方法:授课(步骤:打开Eclipse、实施理论课授课)、自我介绍 .NET教师 属性:姓名、所

2、属学校 方法:授课(步骤:打开Visual studio 2005、实施理论课授课)、自我介绍,请问:以下这个解决方案中存在着什么问题?,为什么需要继承 4-2,代码存在重复,违背了“write once, only once”的原则,为什么需要继承 4-3,如何改进?有没有可能建立继承关系,让子类自动继承父类的属性和方法?,Java教师是教师吗? .NET教师是教师吗?,public class Teacher private String name; /教师姓名 private String school; / 所在学校 public Teacher(String myName, Stri

3、ng mySchool) name = myName; school = mySchool; public void giveLesson() System.out.println(知识点讲解); System.out.println(总结提问); public void introduction() System.out.println(大家好!我是“ + school + 的 + name + 。); ,现在,所有子类中相同的代码都抽取到父类中了,为什么需要继承 4-4,public class JavaTeacher2 extends Teacher public JavaTeacher

4、2(String myName, String mySchool) super(myName, mySchool); public void giveLesson() System.out.println(启动 Eclipse); super.giveLesson(); ,public class DotNetTeacher2 extends Teacher public DotNetTeacher2(String myName, String mySchool) super(myName, mySchool); public void giveLesson() System.out.prin

5、tln(启动 Visual Studio .NET); super.giveLesson(); ,使用继承,可以有效实现代码复用,子类自动继承父类的属性和方法,子类中不再存在重复代码,如何实现继承 3-1,在Java语言中,用extends关键字来表示一个类继承了另一个类,例如:,public class JavaTeacher2 extends Teacher /其余代码省略 ,在父类中只定义一些通用的属性与方法,例如:,public class Teacher private String name; /教师姓名 private String school; / 所在学校 public T

6、eacher(String myName, String mySchool) /初始化属性值 public void giveLesson() /授课方法的具体实现 public void introduction() /自我介绍方法的具体实现 ,如何实现继承 3-2,子类自动继承父类的属性和方法,子类中可以定义特定的属性和方法,public class Teacher private String name; /教师姓名 private String school;/ 所在中心 public Teacher (String myName, String mySchool) /初始化属性值 p

7、ublic void giveLesson() /授课方法的具体实现 public void introduction() /自我介绍方法的具体实现 ,public class JavaTeacher2 extends Teacher public JavaTeacher2(String myName, String mySchool) super(myName, mySchool); public void giveLesson() System.out.println(启动Eclipse); super.giveLesson(); ,由于giveLesson()方法与父类的实现有所不同,因

8、此重写了该方法,方法重写:子类和父类的方法具有相同的名称、参数列表、返回类型,父类中的属性和方法可以被子类继承,public class JavaTeacher2 extends AccpTeacher public JavaTeacher2(String myName, String mySchool) super(myName, mySchool); ,如何实现继承 3-3,子类的构造方法中,通过super关键字调用父类的构造方法,方法重写后,通过super关键字调用父类的方法,public class JavaTeacher2 extends Teacher public void gi

9、veLesson() System.out.println(启动 Eclipse); super.giveLesson(); ,通过调用父类的构造方法,完成对属性值的初始化,protected访问控制符,protected 修饰的变量和方法可以被三种类所访问,即,(1)类本身,(2)同一包中的类,(3)不同包中的子类,子类的继承性,属性和方法的继承 子类能够继承父类的public和protected的变量和方法。 如果子类和父类在同一个包中,那么子类能够继承父类的默认权限的变量和方法 子类不会继承父类private的变量和方法 注意:构造方法不能被继承 见例子1,例子2,变量的隐藏和方法的覆盖

10、,1.变量的隐藏 子类中定义的全局变量和父类中的全局变量同名时,子类会隐藏父类的变量(以子类变量为准) 2.方法的覆盖 子类中定义的方法和父类的方法如果方法的头部完全相同,只有方法体不同,那么子类的方法会覆盖父类的方法(以子类方法为准),一切类的“祖先”Object,在Java 中,所有的Java类都直接或间接地继承了java.lang.Object类,public class MyObject / ,public class MyObect extends Object / ,在Eclipse中调用MyObject对象的成员,会自动弹出继承自Object的所有方法,小结,请编码实现动物世界的

11、继承关系: 动物(Animal)具有行为:吃(eat)、睡觉(sleep) 动物包括:兔子(Rabbit),老虎(Tiger) 这些动物吃的行为各不相同(兔子吃草,老虎吃肉);但睡觉的行为是一致的。 请通过继承实现以上需求,并编写测试类AnimalTest进行测试。,final类和方法,1.final类不能被继承 出于安全性的考虑,将类修饰成final,使其不能被继承,例如String类 2.final方法不能被覆盖,对象的上转型对象,我们经常说老虎是食肉动物等,如果把老虎看成是子类,食肉动物是父类的话,反映到程序中,就是子类对象可以赋值给父类的变量: 例如: Father f=new Son

12、();则称父类变量f为子类对象的上转型的对象 注意:对象的上转型对象的实体是子类创建的,但是上转型对象会失去原对象的一些属性和功能。例如:Teacher.java 和JavaTeacher.java,对象的下转型,第一步:先把对象上转型 假设Son类继承Father类,则Father f=new Father(); 第二步:把上转型的对象进行下转型 Son s=(Son)f;相当于强制类型转换经过下转型之后的对象,则又恢复了子类的所有属性和方法,创建子类对象时与父类构造方法的关系,创建子类对象时,默认情况下将会调用父类无参的构造方法,如果父类没有无参的构造方法,那么编译将会出错 可以通过super关键字,扭转这种现象 例如:,现场编程,

温馨提示

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

评论

0/150

提交评论