Java2实用教程第4版第5章子类与继承PPT课件

合集下载

第5章 Java的继承多态高级类特性和数组PPT课件

第5章 Java的继承多态高级类特性和数组PPT课件
5 2)char last = greeting.charAt(4); //提取“Hello”字符串的第4个字符‘o’
Java语言程序设计
5.1.3 String类
3. 字符串的修改、连接和替换 1)字符串连接 String str1 = “abc”; String str2 = str1.concat(“cde”); //str2=“abccde” 相当于 String str2= str1 + “cde”; 2)替换子串 String str3 = str2.replace(“c”,”33”): // str3 = “ab3333de”; String str3 = str2.replace(“cc”,”33”): // str3 = “ab33de”;
public class test{ public static void main(String[] args) { System.out.println(max(4,3)); System.out.println(max(5,7,2)); }
static int max ( int a , int b ) { return a > b ? a : b ; }
{ A.a = new A(); B.b = new B(); a.f(); a.h(); b.f();
} }
Java语言程序设计
5.3 重载方法
方法的重载是指同一个类中定义多个名称相同、但 参数不同的方法。
Java虚拟机能根据传递给方法的参数,自动选择合 适的重载方法。
Java语言程序设计
重载的简单例子
static int max ( int a , int b, int c ) { int t ; t = max ( a , b ) ; return max ( t , c ) ;

java继承ppt课件

java继承ppt课件
代码重用
通过继承,子类可以重用父类的代码,避 免了重复编写相同的功能,提高了代码的
复用性。
组织代码结构
通过合理的继承层次结构,可以清晰地表 达类之间的层次关系和依赖关系,使代码
结构更加清晰和易于维护。
多态性
继承是实现多态的重要手段,通过继承, 子类可以覆盖父类的方法,实现不同的行 为,增强了程序的灵活性和可扩展性。
如果父类成员没有访问修饰符 ,则默认为包级别访问,子类
只能在该包内访问。
继承的继承方式
单继承
一个子类只能继承一个父类。
实现多接口
一个类可以实现多个接口,实现多接口可以实现多个方法的重写 。
接口继承
一个接口可以继承另一个接口,子接口继承父接口的方法。
03 Java继承的实现
父类的构造方法
01
父类的构造方法在子类中默认被继承,子类可以直 接使用父类的构造方法来初始化父类的属性。
02
如果子类没有显式地定义构造方法,则编译器会自 动调用父类的无参构造方法。
03
如果父类没有定义无参构造方法,子类必须显式地 调用父类的有参构造方法。
子类的构造方法
1
子类的构造方法可以显式地调用父类的构造方法 ,使用super关键字指定要调用的父类构造方法 。
2
子类的构造方法可以同时执行自己的初始化代码 。
3
子类的构造方法可以定义自己的属性和方法,以 实现更具体的功能。
子类对父类方法的覆盖
子类可以定义与父类同名 的方法,以覆盖父类的方 法。
子类可以通过@Override 注解来表明自己覆盖了父 类的方法,以提高代码的 可读性。
ABCD
当子类对象调用该方法时 ,将执行子类中的方法, 而不是父类中的方法。

JAVA程序设计(第五章 子类与继承)

JAVA程序设计(第五章 子类与继承)

People
kate instanceof People
ture
mike instanceof People mike instanceof student mike instanceof UniverStudent
Student
kate
false
10
kate instanceof UniverStudent

例11
26
abstract类和abstract方法
用关键字 abstract 修饰的类称为 abstract 类(抽象 类)。如:

abstract class A { …… } 用关键字 abstract 修饰的方法称为 abstract 方法( 抽象方法),例如:

abstract int min(int x,int y);
4
子类的继承性

子类和父类在同一个包中的继承性
子类继承其父类中不是 private 的成员变量和成员方 法作为自己的成员变量和成员方法,继承的成员变量 和成员方法访问权限保持不变



例1:所有的类都在无名包中
Example5_1 People Student UniverStudent
5
子类的继承性

用extends来定义一个子类:
class 子类名 extends 父类名
{ … } class Student extends People { …
3
}
子类与父类

类的树形结构
•任何类都是Object的子孙类 •每个类有且仅有一个父类 •一个类可有多个子类 •一个类的定义中无extends,则默认是 Object的子类

Java实用PPT课件第5章 继承、接口与泛型-精选文档

Java实用PPT课件第5章 继承、接口与泛型-精选文档

3
2. 子类和父类在同一包中的继承性
如果子类和父类在同一个包中,那么子类自然地继承了其父 类中不是 private 的成员变量作为自己的成员变量,并且也自然 地继承了父类中不是private的方法作为自己的方法。 继承的成员变量以及方法的访问权限保持不变。 下面的例5-1中(效果如图5.1所示),Son是Father的子类,而 GrandSon是Son的子类,请注意子类的继承性。
4
3.子类和父类不在同一包中的继承性
如果子类和父类不在同一个包中,那么子类只能 继承父类的protected、public成员变量和方法,继 承的成员或方法的访问权限不变。 如果子类和父类不在同一个包里,子类不能继承 父类的友好变量和友好方法。
5
5.3 子类对象的构造过程
当用子类的构造方法创建一个子类的对象时,子类的构造方法 总是先调用父类的某个构造方法,如果子类的构造方法没有指明使 用父类的哪个构造方法,子类就调用父类的不带参数的构造方法。 因此,我们可以这样来理解子类创建的对象: ◆将子类中声明的成员变量作为子类对象的成员变量。 ◆父类的成员变量也都分配了内存空间,但只将其中一部分(继承 的那部分)作为子类对象的成员变量。子类对象内存示意如图 5.2 所示。 例5-2中(效果如图5.3所示),子类调用继承的方法操作这些 未被子类继承却分配了内存空间的变量。
1
5.1 子类与父类
继承是一种由已有的类创建新类的机制。利用继承,我们可以先创 建一个共有属性的一般类,根据该一般类再创建具有特殊属性的新类, 新类继承一般类的状态和行为,并根据需要增加它自己的新的状态和行 为。由继承而得到的类称为子类,被继承的类称为父类(超类)。 父类可以是自己编写的类也可以是 java类库中的类。利用继承有利 于实现代码的重复使用,子类只需要添加新的功能代码即可。Java不支 持多重继承,即子类只能有一个父类。

Java2实用教程第4版第5章子类与继承精品PPT课件

Java2实用教程第4版第5章子类与继承精品PPT课件
第 1 页1 页1 页1 页1 页7 页
§5.2.1 子类和父类在同一包中的继承性
如果子类和父类在同一个包中,那么,子类 自然地继承了其父类中不是private的成员变量 作为自己的成员变量,并且也自然地继承了父类 中 不 是 private 的 方 法 作 为 自 己 的 方 法 , 继 承 的 成员变量或方法的访问权限保持不变。
第 1 页1 页1 页1 页1 页13 页
例子3(Example5_3.java)中,Goods类有一个名字为weight的double型成 员 变 量 , 本 来 子 类 CheapGoods 可 以 继 承 这 个 成 员 变 量 , 但 是 子 类 CheapGoods又重新声明了一个int型的名字为weight的成员变量.程序运行效 果如图5.4 .
第 1 页1 页1 页1 页1包中的继承性
如果子类和父类不在同一个包中,那么,子 类继承了父类的protected、public成员变量做 为子类的成员变量,并且继承了父类的 protected、public方法为子类的方法,继承的 成员或方法的访问权限保持不变。
第 1 页1 页1 页1 页1 页6 页
§5.2 子类的继承性 所谓子类继承父类的成员变量作为自己的一个成
员变量,就好象它们是在子类中直接声明一样,可以 被子类中自己定义的任何实例方法操作。
所谓子类继承父类的方法作为子类中的一个方法, 就好象它们是在子类中直接定义了一样,可以被子类 中自己定义的任何实例方法调用。
第 1 页1 页1 页1 页1 页11 页
§5.3 子类与对象
5.3.1 子类对象的特点 子类的构造方法创建一个子类的对象时,不仅子类中声明的成员变量
被分配了内存,而且父类的成员变量也都分配了内存空间,但只将子类继 承的那部分成员变量作为分配给子类对象的变量 。

JAVA-继承与多态PPT学习课件

JAVA-继承与多态PPT学习课件

5
2020年2月16日星期日
Java程序设计 EmployeeClass类与ManagerClass类的关系图
6
2020年2月16日星期日
Java程序设计
// file name:EmployeeClass.java
public class EmployeeClass {
// 雇员类
private String name;
9
2020年2月16日星期日
Java程序设计 ShapeClass类、RectangleClass类与 SquareClass类之间的关系类图
ShapeClass类是几何图元的通用类;矩形是一种特定的几何图元,因此, RectangleClass类应该是ShapeClass的子类;正方形是一种特殊的矩形, 所以SquareClass类是RectangleClass类的子类。
public double getSpecial() { ... }
public String toString() { ... }
}
8
2020年2月16日星期日
Java程序设计
举例:设计与几何图元有关的类。
问题分析:几何图元是指可以绘制的基本几何图形,例如矩形、正 方形、圆形、多边形等。鉴于篇幅的考虑,这里只考虑矩形与正方 形。 假设任何几何图元都有颜色与位置两个属性,因此应该将这些共有 特性定义在一个类中,它是顶层类;而矩形还应该有长、宽两个属 性,由于矩形是一种几何图元,所以它自然应该拥有几何图元的共 有特性,因此可以将矩形类设计为几何图元类的子类;因为正方形 是一种特殊的矩形,它的特殊性在于长与宽相等,所以应该将正方 形类设计为矩形的子类。
// 颜色属性
private Point place; // 位置属性

jAVA基础知识 第5章 子类与继承

jAVA基础知识 第5章 子类与继承

编程学习网1)继承是一种由已有的类创建新类的机制。

2)Java 不支持多重继承,即子类只能有一个父类。

例如:class Student extends People{…..}把Student 类定义为People 的子类。

如果c 是b 的子类,b 又是a 的子类,习惯上称c 是a 的子孙类。

Java 的类 按照继承关系形成树形结构,在这个树形结构中根节点是Object 类(Object 类是ng 包中的类),即Object 类是所有类的祖先类。

如果一个类的声 明中没有使用extends 关键字,这个类被系统默认认为是Object 的子类。

如果子类和父类在同一包中,那么子类自然地继承了父类中不是private 的成员变量和方法。

5.2.2 子类和父类不在同一包中的继承性 编程学习网子类和父类不在同一包中时,父类中的private 和友好访问权限的成员变量不会被子类继承。

子类只继承父类中的protected 和public访问权限的成员变量5.2.3 继承关系的UML 图。

1).当子类的构造方法创建一个子类的对象时,不仅子类中声明的成员变量被分配了内存,而且父类的成员变量也都被分配了内存空间。

但只将子类继承的那部分成员变量作为分配给子类对象的变量。

即子类不继承父类的私有成员变量。

2).如果子类和父类不在同一包中,尽管父类的友好成员变量分配了内存空间,但也不作为子类对象的变量,即如果子类和父类不在同一包中,子类不继承父类的友好成员变量。

编程学习网子类声明的成员变量和从父类继承来的成员变量名字相同,子类就会隐藏所继承的成员变量。

子类继承的方法只能操作子类继承和隐藏的成员变量,子类新定义的方法可以操作子类继承和子类新声明的成员变量,但无法操作子类隐藏的成员变量(需 使用super 关键字操作隐藏的成员变量。

)5.4.2 方法重写(Overwride) 1)子类通过重写可以隐藏已继承的方法。

2)重写规则:子类继承了父类的某个方法,子类就有权重写这个方法,是指子类中定义了一个方法,这个歌方法的类型和父类的方法的类型一致或者是父类的方法的类型的子类型。

Java第5章继承与多态.ppt

Java第5章继承与多态.ppt

class ClassInheritance { public static void main(String args[ ]) { B bb = new B( ); System.out.println("B: "+bb.b1+" "+bb.b2+ " "+bb.b3+" "+bb.getb4( )); A aa = new A( ); System.out.println("A: "+aa.b1+" "+aa.b2+ " "+aa.b3+" "+aa.getb4( ) + " "+aa.a + " " + aa.sum( ) ); } }
假设CPP类与A、B、C类在同一个包中。
子类与父类的属性与方法

子类继承父类中除private部分的所 有内容; 子类中新增加的属性和方法是对父 类的扩展; 子类中定义的与父类同名的属性是 对父类属性的隐藏,同名的成员方 法是对父类方法的重载或覆盖。


类的成员覆盖
类成员覆盖是指在子类中新增加的数据
应用继承的主要场合

反映类之间的泛化,即“一般-特殊”关系
学生
大学生
中学生
统一同类操作的接口
draw() draw(){…} draw(){…}
圆形
矩形
子类的定义格式
[修饰符] 子类名称 extends 父类名称 { 子类体; }
《注意》

第5、6章-java2实用教程PPT课件

第5、6章-java2实用教程PPT课件
– Java提供的包主要有
ng,java.io,java.math,java.util
java.applet,java.awt,java.awt.datatransfer
java.awt.event,java.awt.image,java.beans
,java.rmi,java.security,java.sql等
第五、六章 Java基础类
-字符串、日期、时间、数字
JAVA语言程序设计
清华大学 郑莉
4.6.1 Java 基础类库简介
(Java2实用教程-4.18、第5、6章)
Java基础类库
– Java提供了用于语言开发的类库,称为
包 的 应 用
Java基础类库(JFC,Java Foundational Class) , 也称应用程序编程接口(API,Application Programming Interface),分别放在不同的包中

的类,包括

Object类

数据类型包裹类(the Data Type Wrapper)

字符串类(String、StringBuffer)
数学类(Math)
系统和运行时类(System、Runtime)
类操作类
.
4
JAVA语言程序设计
清华大学 郑莉
4.6.1 Java基础类库简介(续)
– Float.parseFloat(“123.11”) //返回float型
– Long.parseLong(“123456”) //返回long型
.
8
JAVA语言程序设计
清华大学 郑莉
4.6.1 Java基础类库简介(续) (参加补充章节) ——常量字符串类String

java教程--子类与继承.ppt

java教程--子类与继承.ppt

默认继承类
ng.Object类: 所有类的祖先 class A{ } 相当于 class A extends ng.Object{ } 如果缺省extends子句,则该类为ng.Object 的子类。
Java技术及其应用
ng.Object类
它处于Java开发环境的类层次树的根部,其他所 有的类都直接或间接地为它的子类。该类定义了 一些所有对象最基本的状态和行为,例如: equals()判断两个对象引用是否相同,等价于== getClass()返回一个对象在运行时所对应的类的 表示,从而可以得到相应的信息。 toString()返回对象的字符串表示。
Java中支持多层继承。
再思考一下继承的作用?
1、提高代码复用度,减少代码; 2、方便扩展,在以前的基础上进行改进 3、总之,取其精华、引入创新
本章学习内容
1、子类继承父类的属性和方法 2、父类的属性和方法不够用怎么办? 研究:子类增加新的属性和方法 3、父类如果想保留某些属性和方法怎么办? 研究:父类设定某些属性和方法不允许继承 4、父类的某些属性和方法,不太适合子类怎么办? 研究:子类修改父类的属性和方法 5、父类不想被继承怎么办? 研究:为了保密性,类可设置为不允许继承 6、父类允许被继承,但是不想被修改属性和方法怎么办? 父类的某些属性和方法允许继承,但是不允许子类修改;
子类的继承性
若子类和父类在同一个包内,子类可以继承父类中 访问权限设定为public、 protected、 default的成 员变量和方法。 若子类和父类不在同一个包内,子类可以继承父类 中访问权限设定为public、 protected的成员变量 和方法。
例题 正常继承
class A{ int x; void setX(int x){ this.x=x; } int getX(){ return x; } } class B extends A{ double y=12; void setY(int y){ this.y=y+x; } double getY(){ return y; } }

Java语言程序设计基础教程(继承、接口和内部类)ppt.ppt

Java语言程序设计基础教程(继承、接口和内部类)ppt.ppt


System.out.println("Contents of superOb: ");

superOb.showij();

System.out.println();

// The subclass has Access to all public members of its superclass.
class ep4_2_b extends ep4_2_a {

int n;

float f() {

float c;

super.n = n;

c = super.f();

return c / n;

}

float g() {

float c;

c = super.f();

return c / 2;

subOb.sum();

}
}
4.1.3 super关键字
与类中this关键字相似,Java语言中使用关键 字super表示父类对象。通过在子类中使用 super做前缀可以引用被子类隐藏的父类变量 或被子类重写的父类方法。super用来引用当 前对象的父类,虽然构造方法不能够继承,但 利用super关键字,子类构造方法中也可以调 用父类的构造方法。

public static void main(String args[]) {

SA superOb = new SA();

SB subOb = new SB();

// The superclass may be used by itself.

Java程序设计实用教程(第2版)第5章_子类与继承

Java程序设计实用教程(第2版)第5章_子类与继承
2019/8/2 18
例5-5 Example5_5.java 例5-5中,子类B重写了父类的computer()方法,运行效果如图5.5
例5-5中,如果子类如下重写方法computer将产生编译错误。
double computer(float x,float y) { return x*y;
}
其原因是,父类的方法computer的类型是float,子类的重写方 法computer没有和父类的方法computer保持类型一致,这样子 类就无法隐藏继承的方法,导致子类出现2个方法的名字相同, 参数也相同,这是不允许的。
2019/8/2 9
§5.2.4 继承关系(Generalization)的UML图
如果一个类是另一个 类的子类,那么UML通过 使用一个实线连接两个 类的UML图来表示二者之 间的继承关系,实线的 起始端是子类的UML图, 终点端是父类的UML图, 但终点端使用一个空心 的三角形表示实线的结 束。
2019/8/2 7
§5.2.2 子类和父类不在同一包中的继承性
如果子类和父类不在同一个包中,那么,子 类 继 承 了 父 类 的 protected、public 成 员 变 量 做 为子类的成员变量,并且继承了父类的 protected、public 方 法 为 子 类 的 方 法 , 继 承 的 成员或方法的访问权限保持不变。
2019/8/2 8
§5.2.3 protected的进一步说明 ( 选讲 )
一个类A中的protected成员变量和方法可以被它的直接子类 和间接子类继承,如B是A的子类,C是B的子类,D又是C的子类, 那么B、C和D类都继承了A类的protected成员变量和方法。
如果用D类在D中创建了一个对象,该对象总是可以通过“.” 运算符访问继承的或自己定义的protected变量和protected方法 的,但是,如果在另外一个类中,如在Other类中用D类创建了一个 对 象 object, 该 对 象 通 过 “ . ” 运 算 符 访 问 protected 变 量 和 protected方法的权限如所述。 ( 1 ) 对 于 子 类 D 中 声 明 的 protected 成 员 变 量 和 方 法 , 如 果 object要访问这些protected成员变量和方法,只要Other类和D 类在同一个包中就可以了。 (2)如果子类D的对象的protected成员变量或protected方法是 从父类继承的,那么就要一直追溯到该protected成员变量或方 法的“祖先”类,即A类,如果Other类和A类在同一个包中,那 么object对象能访问继承的protected变量和protected方法。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
重点和难点
– 重点:类的继承性、上转型对象和多态技术 – 难点:理解上转型对象和多态技术的理解和运用
2020/11/24
第2页
LOGO
§5.1 子类与父类
LOGO
➢ 继承是一种由已有的类创建新类的机制。利用继承, 我们可以先创建一个共有属性的一般类,根据该一般
类再创建具有特殊属性的新类,新类继承一般类的状
➢ 所谓子类继承父类的方法就是把继承来的方法作为子类中 的一个方法,就好象它们是在子类中直接定义了一样,可 以被子类中自己定义的任何实例方法调用。
2020/11/24
第6页
§5.2 子类的继承性
例题:子类的继承
class Father { float weight,height;
String head; void speak(String s) { System.out.println(s); } } class Son extends Father { String hand,foot; }
第5页
§5.2 子类的继承性
LOGO
➢ 类可以有两种重要的成员:成员变量和方法。子类的成员 中有一部分是子类自己声明定义的,另一部分是从它的父 类继承的。
➢ 所谓子类继承父类的成员变量就是把继承来的变量作为自 己的一个成员变量,就好象它们是在子类中直接声明一样, 可以被子类中自己定义的任何实例方法操作。
态和行为,并根据需要增加它自己的新的状态和行为。
由继承而得到的类称为子类,被继承的类称为父类 (超类)。
➢ Java不支持多重继承(子类只能有一个父类)。
2020/11/24
第3页
5.1.1 声明子类
LOGO
➢ 使用关键字extends来定义一个类的子类,格式如下: class 子类名 extends 父类名 { … }
Son s=new Son();
2020/11/24
第 11 页
5.3.1 子类对象的生成
LOGO
➢ 子类创建对象时,子类的构造方法总是先调用父类的某个 构造方法,完成父类部分的创建;然后再调用子类自己的 构造方法,完成子类部分的创建。如果子类的构造方法没 有明显地指明使用父类的哪个构造方法,子类就调用父类 的不带参数的构造方法 。
➢ 下面的例子1中有4个类:People,Student.java, UniverStudent.java和Example5_1,这些类都没有包名 (需要分别打开文本编辑器编写、保存这些类的源文件, 比如保存到C:\ch5目录中),其中UniverStudent类是 Student的子类,Student是People的子类。程序运行效果如 图5.1。
➢ 例如: class Student extends People { … }
说明:把Student类定义为People类的子类、People类是Student 类的父类
2020/11/24
第4页
5.1.2类的树形结构
LOGO
➢ Java的类按继承关系形成树形结构这个树形结构中,根节 点是Object类(Object是ng包中的类),即Object是 所有类的祖先类。
Java 语言程序设计
第5章 子类与继承
辽宁省教育软件大赛参赛作品
配合例子承性 – 子类与对象 – 成员变量的隐藏和方法重写 – super关键字 – final关键字 – 对象的上转型对象 – 继承与多态 – abstract类与abstract方法 – 面向抽象编程 – 开-闭原则
Son s=new Son();
2020/11/24
第7页
LOGO
§5.2.1 子类和父类在同一包中的继承性 LOGO
➢ 如果子类和父类在同一个包中,那么,子类自然地继承了 其父类中不是private的成员变量作为自己的成员变量,并 且也自然地继承了父类中不是private的方法作为自己的方 法,继承的成员变量或方法的访问权限保持不变。
2020/11/24
第8页
§5.2.2 子类和父类不在同一包中的继承性 LOGO
➢ 如果子类和父类不在同一个包中,那么,子类继承了父类 的protected、public成员变量做为子类的成员变量,并且 继承了父类的protected、public方法为子类的方法,继承 的成员或方法的访问权限保持不变。请看下例。
void tellMessage() {
showPeopleMess();
}
}
2020/11/24
第9页
§5.2.3 继承关系(Generalization)的UML图 LOGO
➢ 如果一个类是另一个类的子 类,那么UML通过使用一个 实线连接两个类的UML图来 表示二者之间的继承关系, 实线的起始端是子类的UML 图,终点端是父类的UML图, 但终点端使用一个空心的三 角形表示实线的结束。
public class People {
int age,leg = 2,hand = 2;
public void showPeopleMess() {
System.out.printf("%d岁,%d只脚,%d只手\t",age,leg,hand);
} }
public class Student extends People { int number;
➢ 除了Object类,每个类都有且仅有一个父类,一个类可以 有多个或零个子类。如果一个类(除了Object类)的声明 中没有使用extends关键字,这个类被系统默认为是Object 的子类,即类声明“class A”与“class A extends Object”是 等同的。
2020/11/24
2020/11/24
第 10 页
§5.3 子类与对象
LOGO
➢ 类继承了父类的很多东西,那么子类在创建对象的时候, 他又是怎么生成自己的对象的呢。子类生产的对象会有哪 些东西呢。
例题:子类的继承 class Father { float weight,height;
String head; void speak(String s) { System.out.println(s); } } class Son extends Father { String hand,foot; }
相关文档
最新文档