chapter05 类的继承和派生.ppt

上传人:hyn****60 文档编号:70708048 上传时间:2023-01-25 格式:PPT 页数:31 大小:244.50KB
返回 下载 相关 举报
chapter05 类的继承和派生.ppt_第1页
第1页 / 共31页
chapter05 类的继承和派生.ppt_第2页
第2页 / 共31页
点击查看更多>>
资源描述

《chapter05 类的继承和派生.ppt》由会员分享,可在线阅读,更多相关《chapter05 类的继承和派生.ppt(31页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

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

12、ublic String getName()return name;【例5-2-2】构造方法的显式调用过程。package chap5.example5_2_2;public class Circle extends Shapeprivate double r;public Circle(String name,double r)super(name);/显式调用父类的构造方法this.r=r;System.out.println(Circle的带参构造方法:Circle(String,double);public void show()System.out.println(“我是”+getN

13、ame()+“.半径=”+r);/调用了父类方法package chap5.example5_2_2;public class Test public static void main(String args)Circle circle=new Circle(小圆,1);circle.show();5.5 方法的重新定义方法的重新定义(overriding)n方法的重写:如果在子类中某个方法与父类的某个方法有相同方法署名(方法头),则称子类重写(overriding)了父类的该方法。n效果:子类对象调用这个方法时,将使用子类中定义的方法,对它而言父类中定义的方法已经“看不见”了。【例5-3】方

14、法的重写。形状类 Shape名称 name构造方法show()圆 Circle半径 r构造方法show()【例5-3-1】方法的重写。package chap5.example5_3_1;public class Shape private String name;public Shape()public Shape(String name)super();this.name=name;public String getName()return name;public void setName(String name)this.name=name;public void show()Syste

15、m.out.println(我是一个+name);父类类中的show方法【例5-3-1】方法的重写。package chap5.example5_3_1;public class Circle extends Shapeprivate double r;public Circle(String name,double r)super(name);this.r=r;public void show()System.out.println(半径为+r);重写了父类中的show方法package chap5.example5_3_1;public class Test public static v

16、oid main(String args)Circle circle=new Circle(圆,1);circle.show();半径为1.0【例5-3-2】方法的重写调用父类同名方法。package chap5.example5_3_1;public class Shape private String name;public Shape()public Shape(String name)super();this.name=name;public String getName()return name;public void setName(String name)this.name=na

17、me;public void show()System.out.println(我是一个+name);父类中的show方法【例5-3-2】方法的重写调用父类同名方法。package chap5.example5_3_1;public class Circle extends Shapeprivate double r;public Circle(String name,double r)super(name);this.r=r;public void show()super.show();System.out.println(半径为+r);调用父类中的show方法package chap5.e

18、xample5_3_1;public class Test public static void main(String args)Circle circle=new Circle(“小圆,1);circle.show();我是一个小圆半径=1.0重写Object类的toString()方法nObject类:java中所有类的父类。ntoString()方法:是Object的一个公有方法,返回一个String类型的数据代表该对象,默认取值为:类的名称该类对象hash码的十六进制表示例如:Shape shape=new Shape();System.out.println(shape);系统默认

19、调用该对象的toString方法实现输出。重写Object类的toString()方法【例5-4】在Shape类中重写Object类的toString()方法,实现字符串形式的输出。package chap5.example5_4;public class Shape private String name;public Shape()public Shape(String name)this.name=name;public String toString()return 我是一个+name+n;package chap5.example5_4;public class ShapeTest

20、public static void main(String args)Shape shape=new Shape(图形);System.out.println(shape);本章小结本章小结n继承的作用:在原有类的基础上派生出子类,提高开发效率。n定义子类时,用关键字extends指出它所继承的父类。n子类可以使用父类中被声明为public、protected、package(子类与父类在相同包下)的成员。n父类的属性应设置为private修饰符,并为它们提供public的set和get方法。n如果某个方法是为类中其他的方法提供服务,只在类中使用,将其定义为private,对外界隐藏。本章小

21、结本章小结n父类的构造方法不能够被继承。但当调用子类的构造方法时,系统首先要隐式或显式地调用父类的构造方法。即先构建父类对象再构建子类对象。n为了避免错误,父类中至少要定义一个无参的构造方法。n显式调用父类构造方法的方式为:super(参数)。n在子类中可以重写父类中的方法,使该方法的执行更符合子类的情况。在子类中使用父类已被重写的方法的方式为:super.父类同名方法(参数)。考核目标考核目标【掌握】n子类的声明n类成员修饰符与继承的关系n在子类中使用父类成员(方法)n继承机制下,对象创建的过程(构造方法的使用,super调用)n子类对父类方法的重写(super调用)【理解】n继承概念和作用

22、n理解父类和子类的关系练习1n定义一个类Rectangle代表矩形,为矩形定义getLength方法(获得矩形的长度)、getWidth方法(获得矩形的宽度)、setLength方法(设置矩形的长度)、setWidth方法(设置矩形的宽度)、getArea方法(求矩形的面积)n为矩形派生出一个子类Square代表正方形,对getArea()方法进行重写。n编写程序进行测试。练习2n在Truck类中对toString()方法进行重写,要求输出卡车的名字(父类AutoMobile中定义),卡车的载重量(Truck中定义).n在测试类中用System.out.println()语句打印输出卡车信息。

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

当前位置:首页 > 生活休闲 > 生活常识

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁