Java第五章--继承与多态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-继承与多态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; // 位置属性

Chap_5PPT课件

Chap_5PPT课件
即:子类对父类的同名的属性和同名的方法进行了重置 (进行覆盖)。 注意:属性重置(覆盖)要尽量避免。
• 对子类的使用分两种情况考虑: (a)创建子类实例并赋值给子类的引用变量。这时,子类的引用变量可 以使用从父类继承来的未被子类覆盖的属性和方法,也可以使用自己独 有的属性和方法。如果子类对父类的某些方法和属性进行了覆盖,这时 使用的是子类自己的属性和方法。
多个子类可以继承同一个父类,如果这些子类对父类的 同一个非static方法进行了覆盖,常常采用上述方式,调用 子类 的方法。 把这种方式调用称为类的多态性。
但是,父类的引用变量如果调用的是父类和子类出现的 同名的static方法和同名的属性,实际上调用的是父类的同 名方法和父类的同名的属性。 多态性举例:OverrideTest.java 例题:ConversionTest.java
多态则可以提高类的抽象度和封闭性,统一一个 或多个相关类对外的接口。
5.1 继承
• 为什么要引入继承?
当研究的问题很复杂时,仅仅用一个抽象数据模型来全 面描述,必然也会非常复杂。换句话说,如果要用一个类 来全面描述很复杂的问题,这个类必然非常庞大,设计该 类最终将变成无法企及的事情。
引入继承后,可以使得复杂的问题简单化。把一个复杂 抽象数据模型分解成若干个简单的抽象数据模型,然后使 用继承的机制,将若干个简单的抽象数据模型组合起来, 完成复杂问题的描述。这就是引入继承的根本目的。
从图5.1可以看出,面向对象的继承关系很符合人们的日 常思维模式。电话卡分为无卡号、有卡号两大类,无卡号 的电话卡可以细分为磁卡、IC卡等,有卡号的电话卡可分 为IP电话卡和200电话卡等。
其中,电话卡这个抽象概念对应的电话卡类是所有其他 类的父类,它是所有电话卡的公共属性的集合。这些公共 属性包括卡中剩余金额等静态的数据属性,以及拨打电话、 查询余额等动态的行为属性。

第五章 继承与多态

第五章 继承与多态
Person
Teacher
Student
Cloneable()接口
• • • • • • • • • • • • • class Circle { public Point point=new Point(1,2); public int[]arrayInt=new int[]{1,2,3,4,5,6}; public double radius=50; public Circle(Point p,int[] array,double radius){ public Circle clone(){}//需要实现 } public class CircleTest { public static void main(String[] args) { Circle c=new Circle(); Circle d=c.clone(); } }
பைடு நூலகம்含的语句
方法的覆写
例子
子类想调用父类被覆写的方法
内部类
• 在类内部也可以定义另一个类。如果类Outer的内部再定 义一个类Inner,则Inner被称为内部类。 • 内部类可声明public和private,对它的访问的限制与 成员方法和变量相同。 • Public class Outer{ • //外部类的成员 • public class Inner{ • //内部类的成员 • } • }
interface Network{ public void browse() ; // 浏览 } class Real implements Network{ public void browse(){ System.out.println("上网浏览信息") ; } }; class Proxy implements Network{ private Network network ; // 代理对象 public Proxy(Network network){ work = network ; } public void check(){ System.out.println("检查用户是否合法。 ") ; } public void browse(){ this.check() ; work.browse() ; // 调用真实的主 题操作 } }; public class ProxyDemo{ public static void main(String args[]){ Network net = null ; net = new Proxy(new Real()) ;// 指定代 理操作 net.browse() ; // 客户只关心上 网浏览一个操作 } };

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 父类名称 { 子类体; }
《注意》

Java第五章--继承与多态

Java第五章--继承与多态

CH5 继承与多态
接口(Interface)
又称界面,用来实现类间多重继承功能的结构 其中定义了若干抽象方法和常量,形成了实现 某组功能的属性集合 接口不能直接继承,需要由类具体定义抽象 方法,称为“实现”。
CH5 继承与多态
实现接口
声明类时,用implements声明要实现的接口 类在实现指定接口的抽象方法时,必须使用完全 相同的方法头(返回值、参数列表等) 接口的抽象方法的访问控制符已指定为public, 类实现时必须显式地使用public
CH5 继承与多态
多态的概念
一般是指一个程序中同名的不同方法共存的情况。 方法覆盖 (Overload)
多态的实现
方法重载 (Override)
对象引用
CH5 继承与多态
构造函数的重载
创建类的对象时进行初始化工作; 类定义时可以根据需要定义多个构造函数。 构造函数的重载就是同一个类中存在着若干个 具有不同参数列表的构造函数。
如果子类没有定义构造函数,创建子类对象时 将调用父类无参数的构造函数; 创建子类对象时,先执行父类无参数的构造函 数,再执行子类自己的构造函数; 子类使用super调用父类的构造函数,调用语 句必须是子类构造函数的第一个可执行语句。
CH5 继承与多态
对象初始化的过 程
1、静态初始化运行 2、为对象分配内存空间,得到缺省值
CH5 继承与多态
包的定位(CLASSPATH)
类似操作系统的PATH,指明了查找包的路径:
以classpath包含的一个或多个目录作为起始目录, 查找包目录,并在找到的包目录下查找类文件。
JDK1.3以上的版本,引用java.*等系统包不需 要设置; 不设置时,默认为当前目录,但设置时,一定 要写成“.;d:/temp;……”

《继承和多态》PPT课件

《继承和多态》PPT课件

public class InheritDemo3 extends SuperClass{
float a =4f; public void print(){
int a =5; super.print(); System.out.println("InheritDemo2" System.out.println(a); System.out.println(this.a); System.out.println(super.a); } public static void main(String args[]){ InheritDemo3 id3 = new InheritDemo3(); id3.print(); } }
精选PPT
6
多态的概念
多态是指在一棵继承树中的类可以有多个同名但不同方法体 以及不同形参的方法。
两种情况:
➢ 覆盖:在子类中直接定义和父类同样的属性和方法,但重 新编写了方法体,即子类与父类方法的星参与返回值都相 同,而内部处理不同,这种方法在使用过程中,Java虚拟 机会根据调用这个方法的类来确定哪个方法被调用
return super.a;
Father x=new Father();
}}
Son y=new Son();
System.out.println("a of son is :" +y.a);
System.out.println("a of son's super is :" +y.getA());
Cleanser.main(arg); }
}
精选PPT
13
• 特殊引用:this和super

JAVA 05 继承与多态

JAVA 05 继承与多态

代码重用
易于维护
可扩展性
CD -artist -numberOfTracks +getArtist() +getNumberOfTracks() DVD -director +getDirector()
extends
extends class SubClassName extends BaseClassName
DanceGroup ControlPanel
Band
Waltz Rumba
Cha-Cha
Dancer
Salsa
接口(cont’d)
实现和使用接口
• class ClassName extends BaseClass implements Interface1,Interface2{…}
定义接口
类与接口(相似)
class interface
A superclass provides a secondary An interface provides a secondary data type to objects of its subclasses. data type to objects of classes that implement that interface. An abstract class cannot be instantiated. A concrete subclass of an abstract class must define all the inherited abstract methods. A class can extend another class. A subclass can add methods and override some of its superclass’s methods. An interface cannot be instantiated. A concrete class that implements an interface must define all the methods specified by the interface. An interface can extend another interface (called its superinterface) by adding declarations of abstract methods

JAVA继承与多态

JAVA继承与多态
维护工作量。
深入理解继承概念
面向对象中的继承是一个基于分类学的概念,继承
描述的是一种“is a”的关系。子类是父类在同一 个分类分支上的一个更为特殊的类,只有当类之间 存在的是一种能够被描述为:“子类 is a 父类” 的时候,我们才使用继承。
5.2 类的继承
继承:用extends关键字来表示,子类继承了父类
Employee e = new Manager(…) ; //将管理员看作是职工 Employee e = new Director(…) ; //将领导看作是职工 但下面的语句是错误的: Director d1 = new Employee(…) ; //错:职工不是领导 Director d2 = new Manager(…) ; //错:管理员不是领导 Director d3 = new Director(…) ;
多态应用-方法的通配参数
public class Test { public static void main(String[] args){ Employee emp1 = new Employee("赵兵",28,1500.0F); Manager mgr1 = new Manager("徐军",35,1800.0F, 500.0F); Director dir1 = new Director("黄帅",45,3000.0F,500.0F, "2430","计划司"); CalTax ct1 = new CalTax() ; ct1.findTax(emp1); ct1.findTax(mgr1); 利用参数的多态性,该 方法可接收通配对象。 ct1.findTax(dir1); } } class CalTax { void findTax(Employee e){ System.out.println(e.salary*0.1F) ; 4-13 } }
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

JDK1.3以上的版本,引用java.*等系统包不需 要设置;
不设置时,默认为当前目录,但设置时,一定 要写成“.;d:/temp;……”
2020/12/11
23
CH5 继承与多态
接口(Interface)
又称界面,用来实现类间多重继承功能的结构
其中定义了若干抽象方法和常量,形成了实现 某组功能的属性集合
构造函数的重载就是同一个类中存在着若干个 具有不同参数列表的构造函数。
创建对象时会自动根据给出的实际参数的数目、 类型和顺序来确定调用哪个构造函数。
2020/12/11
16
CH5 继承与多态
构造函数的重载
一个类的不同构造函数之间可以互相调用; 使用关键字this调用,调用的是参数匹配的另 一个构造函数;
当子类执行它自己定义的方法时,所操作的 就是它自己定义的变量,而把继承自父类的变量 “隐藏”起来。
2020/12/11
6
CH5 继承与多态
类的继承——方法的继承与覆盖
方法的继承——
父类的所有非私有方法可以被子类继承。
方法的覆盖——
方法名、返回值和 参数列表
子类重新定义一个与父类同名的方法。
子类覆盖时应该定义与父类完全相同的方法头。
调用语句是整个构造函数的第一个可执行语句。
2020/12/11
17
CH5 继承与多态
调用父类的构造函数
如果子类没有定义构造函数,创建子类对象时 将调用父类无参数的构造函数;
创建子类对象时,先执行父类无参数的构造函 数,再执行子类自己的构造函数;
子类使用super调用父类的构造函数,调用语 句必须是子类构造函数的第一个可执行语句。
CH5 继承与多态
继承的基本概念
继承实际上是存在于面向对象程序中的两个 类之间的一种关系。
/超类
当一个类获取另一个类中所有非私有的数据 和操作的定义作为自己的部分或全部成分时,就 称这两个类之间具有继承关系。
2020/12/11
1
CH5 继承与多态
继承的基本概念
一个父类可以同时拥有多个子类,父类实际 上是所有子类的公共域和公共方法的集合,而每 一个子类则是父类的特殊化。
域的继承—— 父类的所有非私有域是各子类都拥有的域的集合。
域的隐藏——
前提:子类重新定义一个与从父类那里继承来的域 变量完全相同的变量。
2020/12/11
5
CH5 继承与多态
类的继承——域的继承与隐藏
所谓隐藏是指子类拥有了两个相同名字的变 量,一个继承自父类,另一个由自己定义;
当子类执行继承自父类的操作时,处理的是 继承自父类的变量;
类的继承——this & super
this—— 表示当前对象本身,代表了当前对象的一个引用。
常用于将当前对象的引用作为参数传递给其他的对 象或方法。
2020/12/11
9
CH5 继承与多态
类的继承——this & super
super—— 用于在一个类中引用它的父类(属性和方法)。
代表的父类为“直接父类”。
一个包中的类不能重名,不同的包中类名可重。
包有两种:无名包和有名包。
2020/12/11
20
CH5 继承与多态
包的创建
Java源文件的第一条语句:package 包名; 包名一般用小写,一个编译单元中只允许一个。 没有package语句,放在当前目录下的无名包中。
2020/12/11
21
CH5 继承与多态
2020/12/11
10
CH5 继承与多态
多态的概念
一般是指一个程序中同名的不同方法共存的情况。
多态的实现
2020/12/11
方法覆盖 (Overload) 方法重载 (Override)
对象引用
11
CH5 继承与多态
构造函数的重载
创建类的对象时进行初始化工作; 类定义时可以根据需要定义多个构造函数。
包的使用(其他包中的类)
程序文件的开头使用import语句引入所需要的类; 程序文件的开头利用import引入整个包; 使用包名作为类的前缀。
2020/12/11
22
CH5 继承与多态
包的定位(CLASSPATH)
类似操作系统的PATH,指明了查找包的路径:
以classpath包含的一个或多个目录作为起始目录, 查找包目录,并在找到的包目录下查找类文件。
2020/12/11
25
PPT教学课件
谢谢观看
Thank You For Watching
26
2020/12/11
18
CH5 继承与多态
对象初始化的过 程
1、静态初始化运行
2、为对象分配内存空间,得到缺省值
3、执行显式初始化定义
4、执行构造函数中的初始化
2020/12/11
19
CH5 继承与多态
包(package)
Java利用包来组织和管理类,对应于文件系 统的目录结构。
包是一种松散的类的集合,同一包中的类默认 可以互相访问。
接口不能直接继承,需要由类具体定义抽象 方法,称为“实现”。
2020/12/11
24
CH5 继承与多态
实现接口
声明类时,用implements声明要实现的接口
类在实现指定接口的抽象方法时,必须使用完全 相同的方法头(返回值、参数列表等)
接口的抽象方法的访问控制符已指定为public, 类实现时必须显式地使用public
2020/12/11
7
CH5 继承与多态
类的继承——域的隐藏与方法的覆盖
不同之处: 子类隐藏父类的域只是使之不可见,父类的同名域 在子类对象中仍然占有自己的独立的内存空间; 子类方法对父类同名方法的覆盖将清除父类方法占 用的内存,从而使父类方法在子类对象中不复存在。
2020/12/11
8
CH5 继承与多态
单重继承
2020/12/11
2
CH5 继承与多态
类的继承——派生子类
Java的继承通过extends关键字来实现。
子类可以从父类继承所有非private的属性和 方法作为自己的成员。
例子:电话卡类的继承
2020/12/11
3
CH5 继承与多态
类的继承——域的继承与隐藏
相关文档
最新文档