《继承和多态上》PPT课件.ppt
《《继承和多态上》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《继承和多态上》PPT课件.ppt(41页珍藏版)》请在三一办公上搜索。
1、Java语言概述,1,第六讲 继承和多态(上),西亚斯学院计算机系 姜斌2011年,Java语言概述,2,课堂内容,一、继承的概念 1、继承涵义 2、继承定义,父类和子类定义 3、继承例子二、类库继承例子 1、Object类 2、例子三、扩展类 1、继承关系的语法定义 2、属性继承和隐藏 3、方法继承,覆盖和重载*4、子类中构造函数的使用四、Abstract继承,一、继承涵义和定义,1、涵义,继承(Inheritance):三大特性之一类之间的继承关系是现实世界中遗传关系的直接模拟,一方面,它表示类之间的扩展性的联系以及对属性和操作的共享,即子类可以沿用父类(被继承类)的某些特征。另一方面,子
2、类也可以具有自己独立的属性和操作,1、涵义,事物之间最基本联系:1)“IS A”关系 继承是一个“IS A”关系有时也称为“普通”和“特殊”的联系新扩展出来的类是原有类的某一个特例,可有一个或多个子类或扩展类存在,继承关系,Java语言概述,6,组合关系,2)“HAS A”关系一个事物所具有其他事物其他事物是其组成部分,这种一般称为“组合”或“聚合”关系(要和继承区别开),Java语言概述,7,2、继承定义,继承性是指一个新的类继承原有类的基本特性,并增加新的特性;原有类称为父类或基类,新的类称为子类或扩展类。特征:软件复用的一种形式。新类由已存在的类生成,可以不去从头去定义一个新类;如果子类
3、只从一个父类继承,则称为单继承;如果子类从一个以上父类继承,则称为多继承(在java中没有多继承,类似结构通过接口实现)。,继承关系是可以传递的,如左图,E继承C,而C继承A,因而E也继承了A,所以E也是A的子类,是间接子类,C是A的直接子类Class C extends A Class F implements C,D;Class E implements B,D(C,B,D为接口类),Java语言概述,9,3、继承例子,例3,飞机、汽车和轮船可归于交通工具类,飞机/汽车/轮船可以继承交通工具类某些属性和操作,所以交通工具和飞行器/汽车/轮船之间是继承关系,例2,企业中员工可以有不同特殊员工
4、,如经理是特殊的员工,所以,员工和经理类之间是继承关系,例1,动物有不同种类,例如:猫科类和鸟类,所以,动物和猫/鸟之间是继承关系,二、类库继承例子,Java语言概述,11,1.Object类类中的“黄帝”,是一个特殊的类,所有类(包括类库中的和用开发者创作的类都属于其子类,并继承其内容)Object类是所有类的根.每个类都以它来作为超类,所有的类,包括 数组(arrays),都可实现覆盖Object类中的方法.每个类都隐藏地扩展了此类,即等同于在类地声明时加入,“extends Object”,Java语言概述,12,Object类的方法,常用的方法:String toString()输出关
5、于对象的描述信息,可以被覆盖返回对象的字符串表示。Object 的方法返回一个字符串、包含该对象的类名、一个字符和实例散列码(哈希)的十六进制表示。,protected Object clone()创建并返回此对象的一个副本。(在子类中不要依赖Object的这个方法。)boolean equals(Objectobj)指示某个其他对象是否与此对象“相等”。(在子类中不要依赖Object的这个方法。)protected void finalize()当垃圾回收器确定不存在对该对象的更多引用时,由对象的垃圾回收器调用此方法。Class getClass()返回一个对象的运行时类。Int hashC
6、ode()返回该对象的哈希码值。,2、类库类的继承特例,由于所有类都是由继承而来,所以类库的类都是Object的类的直接或间接子类。例如:直接继承Object间接继承Obejct用户自定义类也直接或间接继承Object,3、定义思考,我们定义的飞机类Plane,其实隐含继承Object class Plane extends Object/系统在编译时自动执行例如可以在Plane类中我们定义有toString方法,这个实际继承了覆盖了父类Object同名方法;方法为:public String toString()return(speed is:+speed+nlook is:+look);思
7、考:如果我们不定义这个方法会怎么样,三、继承的实现 定义扩展类,Java语言概述,17,父类名跟在extends 关键字后面,用来说明当前类是哪个已经存在类的子类,存在继承关系。,定义顺序:1)定义父类“动物类”Animal;2)然后定义子类“猫类”Cat;Class Cat extends Animal,子类从父类继承有两个主要的方面:(1)属性的继承。例如,员工是一个父类,有名字、薪水和聘用日期属性。子类继承所有属性(2)方法的继承。一个父类定义了若干操作,如属性获取的三个get方法,加薪方法,它们要被继承。,1、继承关系定义,声明类头-父类名,Java语言概述,18,1)在动物类中包含基
8、本属性,在Cat中包括特有属性“爪子数”,在Bird类中有“翅膀数”属性;2)(见Employee类的代码)Employee类是一个父类。因为子类是父类的扩展,增加了父类没有的属性和方法protected String name;/在Employee类中protected double salary;protected Date hireDay;/上述属性已经被继承/在Manager类中 private double bonus;/经理才有业绩金,我是扩展类!,2 属性继承与隐藏,子类继承了父类成员属性和方法,同时提供更多特有属性和方法,比它们的父类具有更多的功能,,Java语言概述,19,2
9、 属性继承与隐藏,对于父类来说,属性的作用域范围和属性设置是有要求的,要求如下:父类代码中定义的private属性是访问范围在子类无法访问到。,(1)子类可以访问其父类的protected或 public(不推荐)成员;推荐设成protected(2)protected访问是为了体现继承关系来专门提供的访问范围。(3)由于被继承的父类成员没有在子类声明中列出,但是这些成员确实存在于子类中。,Java语言概述,20,2 属性继承与隐藏,Manger类增添了一个新的字段用于存储奖金,并且增添了一个新方法用于设置它的值:(它继承了Employee中的所有属性和方法)class Manager ext
10、ends Employeepublic void setBonus(double b)bonus=b;private double bonus;,Java语言概述,21,3 方法继承、覆盖与重载,对于Manager对象,可以使用getName和getHireDay等方法。即使这些方法没有明显地在Manager类中定义,它们也自动地从Employee类中继承过来了。(注意Object是所以类的超类,见附录)2)方法覆盖(Methods Overriding)方法的覆盖是指:子类定义同名方法来覆盖父类的方法,是多态技术的一个实现。当父类方法在子类中被覆盖时,通常是子类版本在方法被子类对象调用时动态
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 继承和多态上 继承 多态上 PPT 课件
链接地址:https://www.31ppt.com/p-5568497.html