北京大学计算机系:《Java 2实用教程》(第3版)PPT教学课件 第5章 继承与多态

第5章继承与多态 ■第四章已经有论及,抽象性、封装性、继承性和多态性称 为面向对象的四大特性。通过前面的学习,对前两个特性有 了一定程度的理解,本章将继续探讨后两个特性,即继承性 和多态性
◼第四章已经有论及,抽象性、封装性、继承性和多态性称 为面向对象的四大特性。通过前面的学习,对前两个特性有 了一定程度的理解,本章将继续探讨后两个特性,即继承性 和多态性。 第5章 继承与多态

本章要点 ■类的继承; ■类成员的隐藏与重载; ■多态性; ■ Object类和cas类; 抽象类与接口; 对象克隆; ■对象转型和类的设计原则
◼类的继承; ◼类成员的隐藏与重载; ◼多态性; ◼Object类和 Class类; ◼抽象类与接口; ◼对象克隆; ◼对象转型和类的设计原则 本章要点

51类的继承 ■]ava中的继承分类的继承和接口的继承两种,类 的继承只支持单继承;而接口的继承可以是多重继 承
◼Java中的继承分类的继承和接口的继承两种,类 的继承只支持单继承;而接口的继承可以是多重继 承。 5.1 类的继承

51类的继承—子类的定义 子类的定义子类也是类 它的定义形式与一般类的定义形式极其相似,其格式为: I Modifiers] class Sub className extends SuperclassName d//classBody 其中, Modifiers是修饰符,可以使用的修饰符与前一章中所 介绍的一样; SubClassName是子类的名称; extends是用于 实现继承的关键字,当类的定义中有 extends关键字时,表 示当前定义的类继承于别的类,是别的类的子类; SuperClassName是父类名; Classbody是子类的类体
[Modifiers] class SubClassName extends SuperClassName { //ClassBody } ▪子类的定义子类也是类。 它的定义形式与一般类的定义形式极其相似,其格式为: 其中,Modifiers是修饰符,可以使用的修饰符与前一章中所 介绍的一样;SubClassName是子类的名称;extends是用于 实现继承的关键字,当类的定义中有extends关键字时,表 示当前定义的类继承于别的类,是别的类的子类; SuperClassName是父类名;ClassBody是子类的类体。 5.1 类的继承——子类的定义

51类的继承—子类的定义示例 class Point∥/点类 protected int x,y;//点坐标 public Point(t //无参构造方法 public Point(int xx, int yytsetPoint(xx, yyi public void setPoint(int m, int n){x=my=n}/设置标位置 public int getxotreturn X;] public int getYotreturn yi] 继承于点 类的圆类 class Circle extends point//定义圆类 private double radius / radius为圆的半径 public Circle(int x,int y, double r)this x=X; thisy=y; setRadius(r)il public void setRadius( double r) radius=r;}//设置圆的半径 public double getRadiuso{ return radius}//获取圆的半径 public double getAreaotreturn3.1415* radius* radius;//获取圆 的面积
class Point{ //点类 protected int x,y; //点坐标 public Point(){} //无参构造方法 public Point(int xx,int yy){setPoint(xx,yy);} public void setPoint(int m,int n){x=m;y=n;} //设置标位置 public int getX(){return x;} public int getY(){return y;} } class Circle extends Point{ //定义圆类 private double radius; //radius为圆的半径 public Circle(int x,int y,double r){this.x=x;this.y=y;setRadius(r);} public void setRadius(double r){radius=r;} //设置圆的半径 public double getRadius(){return radius;} //获取圆的半径 public double getArea(){return 3.1415*radius*radius;} //获取圆 的面积 5.1 类的继承——子类的定义示例 继承于点 类的圆类

51类的继承—子类的定义示例 public String toString i return"Position (+X++y+ Radius="+radius; y } public class CircleTestt public static void main( String[] args Circle c=new Circle(50, 50, 10); System. out println(c toString); CsetPoint(100, 100) CsetRadius(20); System. out printin(c tostring); } 例中,定义了三个类 Point、 Circle和 ircleTest。 Circle继承于 Point类 Point类是父类,Cide是子类,它们的UML图及相互关系如图5.1所示。 而 CirdleTest类用于对 Circle作一简单测试
public String toString() { return"Position("+x+","+y+")Radius="+radius;} } public class CircleTest{ public static void main(String[] args){ Circle c=new Circle(50,50,10); System.out.println(c.toString()); c.setPoint(100,100); c.setRadius(20); System.out.println(c.toString()); }} 5.1 类的继承——子类的定义示例 例中,定义了三个类Point、Circle和CircleTest。Circle继承于Point类, Point类是父类,Circle是子类,它们的UML图及相互关系如图5.1所示。 而CircleTest类用于对Circle作一简单测试

51类的继承—子类的定义示例 Point tx: int ty int +Point +Point (int, int) +setPoint(int, int): void getxo:in +getO: int 图51 Circle -radius double +Circle(int, int, double) +setRadius (double): void +getRadiuso: double +getAreao: double +to string o: string
5.1 类的继承——子类的定义示例 图5.1

51类的继承—子类的构造方法 在子类的定义示例有这样一条语句: public Point{}/无参构造方法 Java中,在执行子类的构造方法时,必须先执行父类的构造 方法,它的第一条语句必须是调用父类的构造方法的语句。 调用父类的构造方法是通过语句 super(来完成的。如果要调 用父类的有参构造方法,则在 super(的圆括号中加入所需的 参数 当在子类的构造方法中通过 super()来调用父类的构造方法时 如果不带参数,则这样的显式调用可以省略,它调用父类的 构造方法是由系统自动进行的。但是,此时,如果父类中没 有显式定义无参的构造方法,则编译出错
在子类的定义示例有这样一条语句: 5.1 类的继承——子类的构造方法 public Point(){} //无参构造方法 Java中,在执行子类的构造方法时,必须先执行父类的构造 方法,它的第一条语句必须是调用父类的构造方法的语句。 调用父类的构造方法是通过语句super()来完成的。如果要调 用父类的有参构造方法,则在super()的圆括号中加入所需的 参数。 当在子类的构造方法中通过super()来调用父类的构造方法时, 如果不带参数,则这样的显式调用可以省略,它调用父类的 构造方法是由系统自动进行的。但是,此时,如果父类中没 有显式定义无参的构造方法,则编译出错

52类成员的隐藏与重载 通过类的继承,子类继承了父类的成员,同时 在子类中还可以添加一些新成员。但是,当在 子类中添加的成员与父类中的成员同名时,系 统如何处理这样的冲突呢?本节主要探讨这个 问题
◼ 通过类的继承,子类继承了父类的成员,同时 在子类中还可以添加一些新成员。但是,当在 子类中添加的成员与父类中的成员同名时,系 统如何处理这样的冲突呢?本节主要探讨这个 问题。 5.2 类成员的隐藏与重载

52类成员的隐藏与重载—类成员的继承 通过继承,子类继承了父类中除构造方法以外的所有成员,这些 成员称为子类的继承成员。继承成员不仅包括在超类中定义的公 有( public)、受保护( protected)及私有成员( private),还 包括超类的继承成员。但是在子类中,只能直接引用父类中用 public或 protected修饰的成员,父类中用 private修饰的成员在子 类中不可直接引用,因为它们受访问属性的控制 使用子类的程序能访问子类的公有继承成员,但不能访问子类的 受保护和私有的继承成员。子类的内部能访问它自己定义的所有 成员,在程序中,只能访问子类自己定义的公有成员,而不能访 问子类自己定义的受保护和私有成员
◼ 通过继承,子类继承了父类中除构造方法以外的所有成员,这些 成员称为子类的继承成员。继承成员不仅包括在超类中定义的公 有(public)、受保护(protected)及私有成员(private),还 包括超类的继承成员。但是在子类中,只能直接引用父类中用 public或protected修饰的成员,父类中用private修饰的成员在子 类中不可直接引用,因为它们受访问属性的控制。 ◼ 使用子类的程序能访问子类的公有继承成员,但不能访问子类的 受保护和私有的继承成员。子类的内部能访问它自己定义的所有 成员,在程序中,只能访问子类自己定义的公有成员,而不能访 问子类自己定义的受保护和私有成员。 5.2 类成员的隐藏与重载——类成员的继承
按次数下载不扣除下载券;
注册用户24小时内重复下载只扣除一次;
顺序:VIP每日次数-->可用次数-->下载券;
- 北京大学计算机系:《Java 2实用教程》(第3版)PPT教学课件 第6章 异常处理.ppt
- 北京大学计算机系:《Java 2实用教程》(第3版)PPT教学课件 第七章 图形编程.ppt
- 北京大学计算机系:《Java 2实用教程》(第3版)PPT教学课件 第八章 Java Swing与事件处理.ppt
- 北京大学计算机系:《Java 2实用教程》(第3版)PPT教学课件 第9章 Applet基础.ppt
- 北京大学计算机系:《Java 2实用教程》(第3版)PPT教学课件 第10章 多线程.ppt
- 北京大学计算机系:《Java 2实用教程》(第3版)PPT教学课件 第11章 输入输出流及文件.ppt
- 北京大学计算机系:《Java 2实用教程》(第3版)PPT教学课件 第12章 Java的网络编程.ppt
- 北京大学计算机系:《Java 2实用教程》(第3版)PPT教学课件 第2章 标识符、关键字和数据类型.ppt
- 北京大学计算机系:《Java 2实用教程》(第3版)PPT教学课件 第3章 运算符、表达式和语句.ppt
- 清华大学:《操作系统》课程教学资源(PPT课件)第七章 文件系统(向勇).ppt
- 清华大学:《操作系统》课程教学资源(PPT课件)第六章 存储管理(向勇).ppt
- 清华大学:《操作系统》课程教学资源(PPT课件)第五章 处理机管理(向勇).ppt
- 清华大学:《操作系统》课程教学资源(PPT课件)第一章 绪论(向勇).ppt
- 清华大学:《操作系统》课程教学资源(PPT课件)第二章 作业管理和用户接口(向勇).ppt
- 清华大学:《操作系统》课程教学资源(PPT课件)第三章 用户管理和配置管理(向勇).ppt
- 清华大学:《操作系统》课程教学资源(PPT课件)第四章 进程管理(向勇).ppt
- 《微机原理与接口技术》课程教学资源(PPT课件)第四章 半导体存储器(邱银安).ppt
- 《微机原理与接口技术》课程教学资源(PPT课件)第二章 微型计算机中的数制与编码(邱银安).ppt
- 《微机原理与接口技术》课程教学资源(PPT课件)第一章 微型计算机的系统结构与工作原理(邱银安).ppt
- 《微机原理与接口技术》课程教学资源(PPT课件)第三章 8086微处理器(邱银安).ppt
- 北京大学计算机系:《Java 2实用教程》(第3版)PPT教学课件 第4章 对象和类.ppt
- 北京大学计算机系:《Java 2实用教程》(第3版)PPT教学课件 第3章 字符串和数组.ppt
- 北京大学计算机系:《Java 2实用教程》(第3版)PPT教学课件 第2章 Java基本编程结构.ppt
- 北京大学计算机系:《Java 2实用教程》(第3版)PPT教学课件 第1章 Java概述.ppt
- 北京大学计算机系:《Java 2实用教程》(第3版)PPT教学课件 第7章 图形用户界面程序设计入门(7.1)图形用户界面.ppt
- 北京大学计算机系:《Java 2实用教程》(第3版)PPT教学课件 第7章 图形用户界面程序设计入门(7.2)事件驱动程序.ppt
- 北京大学计算机系:《Java 2实用教程》(第3版)PPT教学课件 第7章 图形用户界面程序设计入门(7.3)创建图形用户界面.ppt
- 北京大学计算机系:《Java 2实用教程》(第3版)PPT教学课件 第7章 图形用户界面程序设计入门(7.4)菜单、工具栏、对话框.ppt
- 北京大学计算机系:《Java 2实用教程》(第3版)PPT教学课件 第1章 Java 语言入门.ppt
- 北京大学计算机系:《Java 2实用教程》(第3版)PPT教学课件 第6章 异常处理.ppt
- 北京大学计算机系:《Java 2实用教程》(第3版)PPT教学课件 第4章 对象和类.ppt
- 机械工业出版社:《Java完全自学手册》教材电子教案(PPT课件讲稿)第10章 JDBC链接数据库.ppt
- 机械工业出版社:《Java完全自学手册》教材电子教案(PPT课件讲稿)第11章 Java异常处理.ppt
- 机械工业出版社:《Java完全自学手册》教材电子教案(PPT课件讲稿)第12章 Java I/O处理.ppt
- 机械工业出版社:《Java完全自学手册》教材电子教案(PPT课件讲稿)Java技术概览.ppt
- 机械工业出版社:《Java完全自学手册》教材电子教案(PPT课件讲稿)第1章 J ava开发工具及环境.ppt
- 机械工业出版社:《Java完全自学手册》教材电子教案(PPT课件讲稿)第2章 Java语言基础.ppt
- 机械工业出版社:《Java完全自学手册》教材电子教案(PPT课件讲稿)第3章 程序流程控制.ppt
- 机械工业出版社:《Java完全自学手册》教材电子教案(PPT课件讲稿)第4章 数组.ppt
- 机械工业出版社:《Java完全自学手册》教材电子教案(PPT课件讲稿)第5章 字符串操作.ppt