java程序设计-继承PPT演示课件

上传人:日度 文档编号:24081525 上传时间:2017-11-11 格式:PPTX 页数:77 大小:1.19MB
返回 下载 相关 举报
java程序设计-继承PPT演示课件_第1页
第1页 / 共77页
java程序设计-继承PPT演示课件_第2页
第2页 / 共77页
java程序设计-继承PPT演示课件_第3页
第3页 / 共77页
java程序设计-继承PPT演示课件_第4页
第4页 / 共77页
java程序设计-继承PPT演示课件_第5页
第5页 / 共77页
点击查看更多>>
资源描述

《java程序设计-继承PPT演示课件》由会员分享,可在线阅读,更多相关《java程序设计-继承PPT演示课件(77页珍藏版)》请在金锄头文库上搜索。

1、1/39,继承,2,目录,1 类的继承2 终结类与终结方法3 抽象类4 类的组合,Java类的定义public abstract|final class 类名extends 父类名 implements 接口名 成员变量(域)定义 成员函数(方法)定义,3/39,4,1 类的继承,类的继承一种由已有的类创建新类的机制,是面向对象程序设计的基石之一通过继承,可以根据已有类来定义新类,新类拥有已有类的所有功能Java只支持类的单继承,每个子类只能有一个直接父类父类是所有子类的公共属性及方法的集合,子类则是父类的特殊化继承机制可以提高程序的抽象程度,提高代码的可重用性,5,基类(base class

2、)也称超类(superclass)是被直接或间接继承的类派生类(derived-class)也称子类 (subclass)继承其他类而得到的类继承所有祖先的状态和行为派生类可以增加变量和方法派生类也可以覆盖(override)继承的方法,1 类的继承,1.1 继承的概念基类和派生类,6,子类对象与父类对象存在“IS A”(或“is a kind of”)的关系,1 类的继承,1.1 继承的概念is_a关系,7,动物类层次举例,一般,具体,动物,蛇,蜥蜴,鲸,爬行动物,哺乳动物,狗,巨蜥,壁虎,壁虎,是一种,蜥蜴,爬行,动物是,动物的,一种,1 类的继承,1.1 继承的概念图,8,举例,1 类的

3、继承,1.1 继承的概念又一个例子,9,10,派生类产生的对象从外部来看,它应该包括与基类相同的接口可以具有更多的方法和数据成员其内包含着一个基类类型的子对象,1 类的继承,1.1 继承的概念派生类对象,11,1.2 继承的语法,继承的语法class childClass extends parentClass /类体,类的继承,1 类的继承,12,在一个公司中,有普通员工(Employees)及管理人员(Magagers)两类人员职员对象(Employees)可能有的属性信息包括员工号(employeeNumber)姓名(name)地址(address)电话号码(phoneNumber)管理

4、人员(Managers)除具有普通员工的属性外,还可能具有下面的属性职责(responsibilities)所管理的职员(listOfEmployees),1 类的继承,1.2 继承的语法(续)例,13,Employee与Manager的类图,1 类的继承,1.2 继承的语法(续)例,14,/父类Employeeclass Employee int employeeNumbe ; String name, address, phoneNumber ;/子类Managerclass Manager extends Employee /子类增加的数据成员 String responsibiliti

5、es, listOfEmployees;,1 类的继承,1.2 继承的语法(续)例,15,设有三个类:Person, Employee, Manager。其类层次如图:,1.2 继承的语法(续)例,16,1.2 继承的语法(续)例,17,1.2 继承的语法(续)例,18,1.2 继承的语法(续)例,19,1 类的继承,1.2 继承的语法(续),20,21,22,1 类的继承,通过继承,可以根据已有类来定义新类,新类拥有已有类的所有功能父类是所有子类的公共属性及方法的集合,子类则是父类的特殊化继承机制可以提高程序的抽象程度,提高代码的可重用性,23,子类不能直接访问父类中的私有属性及方法可使用公

6、有(及保护)方法进行访问,1 类的继承,1.2 继承的语法(续)例,24,public class B public int a = 10; private int b = 20; protected int c = 30; public int getB() return b; public class A extends B public int d; public void tryVariables() System.out.println(a); /允许 System.out.println(b); /不允许 System.out.println(getB(); /允许 System.

7、out.println(c); /允许 ,1 类的继承,1.2 继承的语法(续),25,1.3 隐藏和覆盖,扩展类继承已有的属性和方法改写已有的属性和方法改写已有的属性:隐藏改写已有的方法:覆盖,1 类的继承,26,属性的隐藏子类中声明了与父类中相同的成员变量名,则从父类继承的变量将被隐藏子类拥有了两个相同名字的变量,一个继承自父类,另一个由自己声明当子类执行继承自父类的操作时,处理的是继承自父类的变量,而当子类执行它自己声明的方法时,所操作的就是它自己声明的变量,class Parent int aNumber;,class Child extends Parent float aNumbe

8、r;,1 类的继承,1.3 隐藏和覆盖(续)属性的隐藏,27,如何访问被隐藏的父类属性调用从父类继承的方法,则操作的是从父类继承的属性调用被隐藏的属性super.属性,1 类的继承,1.3 隐藏和覆盖(续)访问被隐藏的父类属性,28,class A1 int x = 2; public void setx(int i) x = i; void printa() System.out.println(x); class B1 extends A1 int x=100; void printb() super.x = super.x +10 ; System.out.println(super.x

9、= + super.x + x= + x); ,运行结果:4super.x= 12 x= 10012super.x= 16 x= 100164,public class Exam4_4Test public static void main(String args) A1 a1 = new A1(); a1.setx(4); a1.printa(); B1 b1 = new B1(); b1.printb(); b1.printa(); b1.setx(6); / 将继承x值设置为6 b1.printb(); b1.printa(); a1.printa(); ,1 类的继承,1.3 隐藏和覆

10、盖(续)例属性的隐藏举例,29,30,31,32,33,34,子类不能继承父类中的静态属性,但可以对父类中的静态属性进行操作。如在上面的例子中,将“int x = 2;”改为“static int x = 2;”,再编译及运行程序,会得到下面的结果4super.x= 14 x= 10014super.x= 16 x= 1001616在上面的结果中,第一行及最后一行都是语句“a1.printa();”输出的结果,显然类中的printb()方法修改的是类中的静态属性x,1 类的继承,1.3 隐藏和覆盖(续)例 操作父类静态属性举例,35,36,1.3 隐藏和覆盖,扩展类继承已有的属性和方法改写已有

11、的属性和方法改写已有的属性:隐藏改写已有的方法:覆盖,1 类的继承,37,方法覆盖覆盖方法的返回类型,方法名称,参数的个数及类型必须和被覆盖的方法一摸一样覆盖方法的访问权限可以比被覆盖的宽松,但是不能更为严格,1 类的继承,1.3 隐藏和覆盖(续)方法覆盖,38,方法覆盖的应用场合子类中实现与父类相同的功能,但采用不同的算法或公式 在名字相同的方法中,要做比父类更多的事情 在子类中需要取消从父类继承的方法,1 类的继承,1.3 隐藏和覆盖(续)方法覆盖的应用场合,39,必须覆盖的方法派生类必须覆盖基类中的抽象的方法,否则派生类自身也成为抽象类.不能覆盖的方法基类中声明为final的终结方法基类

12、中声明为static 的静态方法调用被覆盖的方法super.overriddenMethodName();,1 类的继承,1.3 隐藏和覆盖(续)方法覆盖的注意事项,40,1.4 有继承时的构造方法,有继承时的构造方法遵循以下的原则子类不能从父类继承构造方法好的程序设计方法是在子类的构造方法中调用某一个父类构造方法,调用语句必须出现在子类构造方法的第一行,可使用super关键字如子类构造方法的声明中没有明确调用父类构造方法,则系统在执行子类的构造方法时会自动调用父类的默认构造方法(即无参的构造方法),1 类的继承,41,public class Person protected String

13、name, phoneNumber, address; public Person() this(, , ); public Person(String aName, String aPhoneNumber, String anAddress) name = aName; phoneNumber = aPhoneNumber; address = anAddress; ,1 类的继承,1.4 有继承时的构造方法(续)例,42,public class Employee extends Person protected int employeeNumber; protected String w

14、orkPhoneNumber; public Employee() /此处隐含调用构造方法 Person() this(0, ); public Employee(int aNumber, String aPhoneNumber) /此处隐含调用构造方法 Person() employeeNumber = aNumber; workPhoneNumber = aPhoneNumber; ,1 类的继承,1.4 有继承时的构造方法(续)例,43,public class Professor extends Employee protected String research; public Professor() super(); research = ; public Professor(int aNumber, String aPhoneNumber, String aResearch) super(aNumber, aPhoneNumber); research = aResearch; ,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号