chapter05 类的继承和派生.ppt
《chapter05 类的继承和派生.ppt》由会员分享,可在线阅读,更多相关《chapter05 类的继承和派生.ppt(31页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第五章第五章 类的继承和派生类的继承和派生Inheritance/extends/derive本章知识点本章知识点n继承概念和作用n子类的声明n类成员修饰符与继承的关系n理解父类和子类的关系,在子类中使用父类成员(方法)n继承机制下,对象创建的过程(构造方法的使用,super调用)n子类对父类方法的重写(super调用)5.1 继承的概念和软件的重用性继承的概念和软件的重用性n继承:从已有的类中派生出新的类。n新的类能吸收已有类的数据属性和行为。n并能扩展新的能力。n父类是子类的一般化,子类是父类的特例化(具体化)。n父类也称为超类或基类。超类/基类父类子类parents/super/base
2、child/derived父 类子 类学生研究生、大学生、小学生形状三角形、圆、矩形雇员教师、医生、职员交通工具轿车、卡车、公交车水果苹果、梨、桃、桔n类之间的关系n“is-a”关系:类之间是继承的关系。n“has-a”关系:类之间是组合的关系(前4.9节)。5.1 继承的概念和软件的重用性继承的概念和软件的重用性 5.1 继承的概念和软件的重用性继承的概念和软件的重用性n继承分类n单继承:一个子类最多只能有一个父类。n多继承:一个子类可有两个以上的父类。n说明:Java类只支持单继承,而接口支持多继承。Java多继承的功能则是通过接口方式来间接实现的。n继承使软件的代码得到重用,提高了系统的
3、效率。n在继承关系中,子类通过吸收父类的数据(属性)和方法(行为),并增加新功能或修改已有功能来创建新类。5.1 继承的概念和软件的重用性继承的概念和软件的重用性nObject类:Java中所有类的父类,定义和实现了Java系统下所有类的共同行为,所有的类都是由这个类继承、扩充而来的。n认识Object类中的方法5.2 子类的定义子类的定义n子类定义的一般格式 类修饰符 class 子类名 extends 父类名 成员变量定义;成员方法定义;n在子类的定义中,用关键字extends来明确指出它所继承的父类。【例5-1】通过继承来定义子类。package chap5.example5_1;pub
4、lic class Automobile private String number;public void setNumber(String number)this.number=number;void showNumber()System.out.println(车牌号:+number);交通工具类 Automobile车牌号 numbersetNumber()显示车牌号 showNumber()卡车类 Truck载重量 capacitysetCapacity()显示载重量 showCapacity()【例5-1】通过继承来定义子类。package chap5.example5_1;pub
5、lic class Truck extends Automobile private double capacity;public void setCapacity(double capacity)this.capacity=capacity;public void showCapacity()System.out.println(卡车载货容量:+capacity+吨);卡车类 Truck载重量 capacitysetCapacity()显示载重量 showCapacity()【例5-1】通过继承来定义子类。package chap5.example5_1;public class Truck
6、Test public static void main(String args)Truck tc=new Truck();tc.setNumber(京E 88888);tc.setCapacity(10);tc.showNumber();tc.showCapacity();子类使用从父类中继承的方法交通工具类 Automobile车牌号 numbersetNumber()显示车牌号 showNumber()卡车类 Truck载重量 capacitysetCapacity()显示载重量 showCapacity()子类使用从父类中继承的方法5.3 作用域与继承作用域与继承n成员访问控制修饰符在
7、继承中的性质npublic、private、package、protectedn父类的public成员可以在父类中使用,也可以在子类使用。程序可以在任何地方访问public父类成员。n父类的private成员仅在父类中使用,在子类中不能被访问。n父类的protected成员可在子类被访问,无论子类与父类是否存储在同一个包下。n父类的package成员可在同一包的子类中被访问。5.3 作用域和继承作用域和继承n成员访问控制修饰符的具体应用n父类中属性的修饰符:子类应依赖于父类的服务,而不应依赖于父类的数据。所以,应该将父类中的成员变量声明为private,并在父类中定义访问这些private成员
8、变量的public型的方法。(public、protected和package较少修饰属性)n父类中方法的修饰符:关于父类中的private方法,如果某个方法是为类中其他的方法提供服务,只在类中使用,将其定义为private,对外界隐藏。5.3 作用域和继承作用域和继承n子类从父类继承成员时,父类的所有public、protected、package成员,在子类中都保持它们原有的访问修饰符。n例如,父类的public成员成为子类的public成员。父类的protected成员也会成为子类的protected成员。n子类只能通过父类所提供的非private方法来访问父类的private成员。5.
9、4 继承下的构造方法继承下的构造方法n继承下的构造方法的调用次序继承下的构造方法的调用次序n子类构造方法在执行自己的任务之前,将显式显式地(通过super引用)或隐式隐式地(调用父类默认的无参数构造方法)调用其直接父类的构造方法。n类似地,如果父类派生于另一个类,则要求父类的构造方法调用上一级类的构造方法,依此类推。调用请求中,最先调用的一定是Object类的构造方法。n创建对象的过程:先父后子。【例5-2-1】构造方法的隐式调用过程。package chap5.example5_2_1;public class Shape private String name;public Shape()
10、System.out.println(Shape的无参构造方法:Shape();package chap5.example5_2_1;public class Circle extends Shapeprivate double r;public Circle(double r)this.r=r;System.out.println(Circle的带参构造方法:Circle(double);package chap5.example5_2_1;public class Test public static void main(String args)Circle circle=new Circ
11、le(1);为了避免错误,父类中至少定义一个为了避免错误,父类中至少定义一个无参的构造方法。无参的构造方法。【例5-2-2】构造方法的显式调用过程。package chap5.example5_2_2;public class Shape private String name;public Shape()System.out.println(Shape的无参构造方法:Shape();public Shape(String name)super();/调用Object的构造方法this.name=name;System.out.println(Shape构造方法:Shape(String);p
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- chapter05 类的继承和派生 继承 派生
限制150内