Java程序设计实用教程-电子教案 5继承与接口

合集下载

Java实用课件第5章继承、接口与泛型

Java实用课件第5章继承、接口与泛型

2019/12/4
1
5.1 子类与父类
继承是一种由已有的类创建新类的机制。利用继承,我们可以先创 建一个共有属性的一般类,根据该一般类再创建具有特殊属性的新类, 新类继承一般类的状态和行为,并根据需要增加它自己的新的状态和行 为。由继承而得到的类称为子类,被继承的类称为父类(超类)。
父类可以是自己编写的类也可以是java类库中的类。利用继承有利 于实现代码的重复使用,子类只需要添加新的功能代码即可。Java不支 持多重继承,即子类只能有一个父类。
第5章 继承、接口和泛型
本章导读
子类与父类 子类的继承性 子类对象的构造过程
成员变量隐藏和方法的重写
final类与final方法 对象的上转型对象
本章导读 继承和多态 abstract类 面向抽象编程 接口和接口回调 面向接口编程
内部类、匿名类、异 常类和泛型类
例5-2中(效果如图5.3所示),子类调用继承的方法操作这些 未被子类继承却分配了内存空间的变象内存示意如图5.2
2019/12/4
7
5.4 成员变量的隐藏和方法的重写
1.成员变量的隐藏
子类可以隐藏继承的成员变量,当在子类中定义和父类中同 名的成员变量时,子类就隐藏了继承的成员变量,即子类对象以 及子类自己声明定义的方法操作与父类同名的成员变量。
2
5.2 子类的继承性
1.继承的定义
子类的成员中有一部分是子类自己声明定义的, 另一部分是从它的父类继承的。
子类继承父类的成员变量作为自己的一个成员变 量,就好像它们是在子类中直接声明一样,可以被子 类中自己声明的任何实例方法操作。
子类继承父类的方法作为子类中的一个方法,就 像它们是在子类中直接声明一样,可以被子类中自己 声明的任何实例方法调用。

5 继承与接口

5 继承与接口
Page 18
1 继承
public class PersonHashtable extends Hashtable{ public void put(Person Person){ if(Person.id==null) return; super.put(Person.id, Person); } 功能 public Person get(String id){ Person Person = (Person)super.get(id); 定制 return Person; } public String toXMLString(){ ………… } Student.java
Page 23
1 继承
DatabaseDriver driver = 通过配置文件及反射技术加 载合适的子类并生成对象; Person Person = driver.select("1001");
使用
动态 绑定
Page 24
2 抽象类
掌握抽象类的语法 理解的抽象类用途
Page 25
2 抽象类
Page 30
3 接口
接口除方法外可以包含成员变量,这些成员变量 默认都是静态、常量,可以通过接口名使用 public interface A { public String id = "11"; public void toString(); } System.out.toStringln(A.id);
Page 21
1 继承
public class SQLServerDatabaseDriver extends DatabaseDriver { public Connection getConnection(){ 加载SQLServer驱动并连接形成Connection对象 return 生成的Connection对象; } } SQLServerDatabaseDriver.java

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

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

5
§5.2.2 子类和父类不在同一包中的继承性
如果子类和父类不在同一个包中,那么,子 类继承了父类的 protected、public 成员变量做 为子类的成员变量,并且继承了父类的 protected、public 方法为子类的方法,继承的 成员或方法的访问权限保持不变。
6
§5.2.3 protected的进一步说明 ( 选讲 )
10
§5.4 成员变量的隐藏和方法重写
§5.4.1 成员变量的隐藏
对于子类可以从父类继承的成员变量,只要 子类中声明的成员变量和父类中的成员变量同名 时,子类就隐藏了继承的成员变量,子类自己声 明定义的方法操作与父类同名的成员变量是指子 类重新声明定义的这个成员变量。
例5-3 Goods.java , CheapGoods.java , Example5_3.java
class 子类名 extends 父类名 { …… }
例如: class Student extends People { …… }
3
§5.2 子类的继承性
所谓子类继承父类的成员变量作为自己的 一个成员变量,就好象它们是在子类中直接声 明一样,可以被子类中自己定义的任何实例方 法操作。 所谓子类继承父类的方法作为子类中的一个 方法,就象它们是在子类中直接定义了一样, 可以被子类中自己定义的任何实例方法调用。
《Java程序设计实用教程》 第5章
子类与继承
配合例子源代码一起使用
1
导读
Hale Waihona Puke 2§5.1 子类与父类 利用继承,可以先编写一个共有属性的一般 类,根据该一般类再编写具有特殊属性的新类, 新类继承一般类的状态和行为,并根据需要增加 它自己的新的状态和行为。 由继承而得到的类称为子类,被继承的类称 为父类(超类)。 声明一个类的子类的格式如下:

Java程序设计-5-继承和接口

Java程序设计-5-继承和接口

一点提示:
通过程序运行结果和图示关系,可以知道 Postgraduate继承了Student类的所有内容, 也就是说,在Postgraduate类的定义中已经把 Student的所有定义,包括属性、方法都给包 含了进来,这时Postgraduate对象所继承的 Student的方法处理的内容已经完全依赖于当 前对象(Postgraduate)。在某种程度上,读 者可以理解为Postgraduate对象体内包含了一 个完整的Student对象,但这个Student类型的 对象的属性值则有子类来提供。
继承是面向对象编程的主要优点
总的来说,继承是面向对象编程的一个主要优点之 一,它对如何设计Java类有着直接的影响。继承有 如下几点好处: 它可以利用已有的类来创建自己的类,只需要指出 自己的类和已有的其他的类有什么不同即可,而且 还可以动态访问其他有关的类中的信息。 通过继承,可以利用Java类库所提供的丰富而有用 的类,这些类都已经被很好地实现。 当设计很大的程序时,继承可以使程序组织得更加 层次清晰,有利于程序设计和减少错误的发生。
Implicit super constructor Student() is undefined. Must explicitly invoke another constructor。
这句话翻译过来就是,隐含的超类构造函数 Student()并没有定义,程序必须明确的调用 另一个构造函数。错误的原因是因为子类构造 函数中并没有包括一行调用超类构造函数的语 句,导致无法创建一个属于超类的对象。
1.覆盖超类的方法
基本上,重写继承超类的方法存在以下主要原因:
超类是抽象的,继承的方法也是抽象的,需要在子类中为之添加必 要的实现代码。 子类中的方法需要完成额外的工作,如toString()。 提供更好的实现算法,如子类中的某种数据结构发生了变化,可以 采取更好的算法实现优化。 变更方法的可见范围,可以不变、扩大可见范围,不可缩小。例如 某个超类的方法的访问控制修饰符是protected,而子类中为public。

Java课件5继承接口与包

Java课件5继承接口与包

GradStudent.java 清单(未完)
8
5.1 继承—示例…
public String toString(){ return "Grad " + super.toString() + ", " + dept + ", " + thesis; } } // GradStudent 类定义结束
Test.java 程序 清单(后半部分)
23
5.1 继承—超类的初始化…
超类的初始化仍然由超类的构造方法
完成,但要由子类构造方法的第一个 语句来调用,格式是: super( [<实参表>] ); 如果超类重载了多个构造方法,系统 会通过<实参表>与<形参表>的匹配自 动识别调用的是哪个构造方法。
21
5.1 继承—方法覆盖…
只要实际引用的是子类对象,通过
<引用名>.<方法名>(…) 所访问到的只能是子类的同签字的方 法,无论该引用是超类引用还是子类 引用。 (这是方法覆盖与变量隐藏的区别)
22
5.1 继承—方法覆盖
public class Test{ public static void main(String[] x){ Derived d=new Derived(5); Base b=d; System.out.print(d.x+","+d+",“ +b.x+"," +b); } } 程序输出:6,6,5,6
0505.java 程序 清单
27
5.1 继承—超类的初始化示例

《java面向对象程序设计-继承和多态》教案

《java面向对象程序设计-继承和多态》教案

一、教学目标1. 理解继承的概念及其在Java中的实现。

2. 掌握如何使用继承来复用代码和实现接口。

3. 理解多态的概念及其在Java中的应用。

4. 掌握如何通过方法重写和接口实现来实现多态。

5. 能够运用继承和多态编写更加灵活和可扩展的Java程序。

二、教学内容1. 继承的概念和原理定义:继承是面向对象编程中的一种关系,允许一个类(子类)继承另一个类(父类)的属性和方法。

作用:实现代码复用,减少重复代码。

2. Java中的继承语法:class 子类extends 父类示例:通过一个简单的继承例子来展示如何使用继承。

3. 访问修饰符公共(public)、默认(default)、私有(private)和受保护(protected)修饰符在继承中的作用。

示例:演示不同修饰符对继承的影响。

4. 方法重写(Overriding)概念:子类重写父类中的方法。

规则:方法名、参数列表和返回类型必须与父类中的方法相同。

示例:通过一个例子展示如何重写方法,并解释其意义。

5. 多态的概念定义:多态允许一个接口具有多个不同的实现。

类型:编译时多态(静态多态)和运行时多态(动态多态)。

三、教学方法1. 讲授法:讲解继承和多态的基本概念。

2. 示例法:通过具体的代码示例来展示继承和多态的应用。

3. 互动提问:鼓励学生提问,并针对学生的疑问进行解答。

4. 练习法:提供练习题,让学生通过编写代码来加深对知识点的理解。

四、教学步骤1. 引入:通过一个现实生活中的例子(如交通工具)来引出继承的概念。

2. 讲解:详细讲解继承的语法和规则,并通过代码示例展示如何实现继承。

3. 演示:通过示例解释访问修饰符在继承中的作用。

4. 讲解:介绍方法重写的概念和规则,并通过示例展示如何重写方法。

5. 引入:通过一个图形绘制例子引入多态的概念。

6. 讲解:详细讲解多态的原理和应用,并通过代码示例展示多态的实现。

五、教学评估1. 课堂提问:通过提问了解学生对继承和多态的理解程度。

java接口继承和实现

java接口继承和实现

java接口继承和实现Java中的接口继承和实现是面向对象编程中常用的概念和技术。

接口是一种只包含方法声明而没有方法实现的抽象类。

在Java中,一个类可以继承自另一个类,也可以实现一个或多个接口。

1. 什么是接口?接口是一种抽象类。

它定义了一组方法的声明,但没有方法的实现。

它可以包含常量和默认方法。

接口可以被类实现,实现接口的类必须实现接口中声明的所有方法。

2. 为什么要使用接口?使用接口有以下几个原因:- 接口提供了一种规范,定义了一组方法的声明,来确保一组相关类具有相同的行为。

- 接口解耦了类之间的关系,提供了更大的灵活性。

一个类可以实现多个接口,而不仅仅限于单继承。

- 接口提供了一种契约,确保类实现了接口中定义的所有方法,从而增加代码的可维护性,降低了耦合度。

3. 接口的继承?接口可以通过继承来扩展其他接口。

接口的继承使用关键字"extends"。

继承后的接口会继承父接口中的所有方法声明。

javapublic interface ParentInterface {void method1();}public interface ChildInterface extends ParentInterface { void method2();}上述代码中,ChildInterface继承自ParentInterface。

ChildInterface除了拥有自己定义的method2外,还继承了ParentInterface的method1。

4. 类的实现接口?类可以通过实现接口来符合接口的规范。

使用关键字"implements",类必须实现接口中声明的所有方法。

javapublic interface MyInterface {void method1();void method2();public class MyClass implements MyInterface {public void method1() {实现method1方法的逻辑}public void method2() {实现method2方法的逻辑}}上述代码中,MyClass实现了MyInterface接口,需要实现MyInterface 中声明的method1和method2两个方法。

Java面向对象程序设计第5章_继承与接口(2)

Java面向对象程序设计第5章_继承与接口(2)

二、方法的多态性 public class SubClass extends BaseClass{
public String book = "轻量级J2EE企业应用实战"; public void test() {System.out.println("子类的覆盖父类的方法");} public void sub(){System.out.println("子类的普通方法"); } public static void main(String[] args) { BaseClass bc = new BaseClass(); System.out.println(bc.book); bc.base(); 编译时类型和运行时 bc.test(); 类型完全一样,不存 编译时类型和运行时类型 SubClass sc = new SubClass(); 编译时类型和运行时 在多态 System.out.println(sc.book); 不一样,多态发生 类型完全一样,不存 sc.base(); sc.test(); 在多态 sc.sub(); BaseClass ploymophicBc = new SubClass(); System.out.println(ploymophicBc.book); ploymophicBc.base(); ploymophicBc.test(); }}
二、方法的多态性
返回主菜单
记住一个很简单又很复杂的规则,一个类型引用只 能引用引用类型自身含有的方法和变量。 你可能说这个规则不对的,因为父类引用指向子类 对象的时候,最后执行的是子类的方法的。 其实这并不矛盾,那是因为采用了后期绑定,动态 运行的时候又根据型别去调用了子类的方法。而假 若子类的这个方法在父类中并没有定义,则会出错。

java中继承教案

java中继承教案

java中继承教案以下是一个简单的Java中继承的教案示例:教学目标:1. 理解继承的概念和作用。

2. 掌握继承的实现方式。

3. 掌握方法的重写和super关键字的使用。

教学内容:1. 继承的概念和作用2. 继承的实现方式3. 方法的重写和super关键字的使用教学步骤:一、导入新课通过一个简单的例子引入继承的概念,比如一个动物类和一个猫类,猫类继承了动物类的属性和方法。

二、讲解概念和作用1. 继承的概念:子类继承父类的属性和方法,并且可以添加自己的属性和方法。

2. 继承的作用:代码重用、多态性、增加代码的可维护性和可读性。

三、实现继承1. 通过使用extends关键字实现继承,比如:class Cat extends Animal。

2. 子类可以添加自己的属性和方法,比如:class Cat extends Animal { ... }。

3. 子类可以重写父类的方法,比如:class Cat extends Animal { public void eat() { ... } }。

四、方法的重写和super关键字的使用1. 子类可以重写父类的方法,但是方法名、参数列表和返回值类型必须相同。

比如:class Cat extends Animal { public void eat() { ... } }。

2. super关键字可以调用父类的方法,比如:()。

3. super关键字还可以访问父类的属性,比如:。

五、练习和巩固1. 编写一个简单的Java程序,演示继承的概念和实现方式。

2. 编写一个简单的Java程序,演示方法的重写和super关键字的使用。

Java面向对象程序设计第5章_继承与接口(1)

Java面向对象程序设计第5章_继承与接口(1)

一、类的继承
2、继承(4)
继承
多继承
单继承 Java只支持 单继承
有了继承机制,多个类可以互相关联,就不再 是各自封闭的了。
一、类的继承
3、重写子类(1)
•子类继承父类的成员变量 如果子类声明一个与父类成员变量同名的成员变
量,则不能继承父类的同名成员变量。此时称子 类的成员变量隐藏了父类中的同名成员变量。 实例演示
子类的方法不能比父类的方法有更严格的访问权限 (子类
的方法不能缩小父类方法的访问权限 重写的方法要和被重写的方法的方法名称、参数列表、 返回类型都要一样
覆盖方法和被覆盖方法要么都是类方法,要么都
是实例方法,不能一个是类方法,一个是实例方
法。
方法重写遵循的规则
• 若父类方法的访问权限是private 则子类方法 的访问权限可以是private、默认的、protected 、public; • 若父类方法的访问权限是protected 则子类方法 的访问权限可以是默认的、protected、public; • 若父类方法的访问权限是默认的 则子类方法 的访问权限可以是protected、public; • 若父类方法的访问权限是public 则子类方法 的访问权限只能是public
一、类的继承
2、继承(3) Fruit.java
public class Fruit{ public double weight; public void info() { System.out.print(“我是一个水果!重”+weight+”g!”); Apple.java } } public class Apple extends Fruit{ public static void main(String[] args) 例子: { Apple a =new apple(); Person a.weight=56; Teacher (); } Student }

Java程序设计 实验05 继承和接口

Java程序设计 实验05 继承和接口

实验51、实验名称:继承和接口2、实验班级:软件08013、指导老师:陈欲勐4、实验环境4.1 实验室:教学楼68084.2 软件环境:win2000 Server,Eclipse 3.2,JDK 1.5/1.65、实验目的1.掌握继承的概念,以及子类对象的创建、成员变量的继承/隐藏,还有方法的继承和重写。

2.掌握向上转型对象的使用;3.掌握接口回调技术;6、实验任务6.1 提高性实验任务完成实验指导教材中的相关实验任务(源代码可以参照补充资料“实验指导_习题解答”)1.实验 1 继承(源程序在所提供的包chap4.exercise2下的文件TestInheritance.java,正确程序在所提供的包chap4.exercise下的文件TestInheritance.java)2.实验2 向上转型对象(源程序在所提供的包chap4.exercise2下的文件TestUpcast.java,正确程序在所提供的包chap4.exercise下的文件TestUpcast.java)3.实验 3 接口回调(源程序在所提供的包chap4.exercise2下的文件TestInterface.java,正确程序在所提供的包chap4.exercise下的文件TestInterface.java)6.2 验证性实验任务对教材中的相关例子在Eclipse开发平台中进行验证(源代码可以参照补充资料“教材源代码”):1.第4章中的例子,在包chap4.example中。

1)Example4_19相关知识点:向上转型;2)Example4_20相关知识点:多态;3)Example4_21和 Example4_22相关知识点:抽象类和抽象方法;4)Example4_23和 Example4_24相关知识点:super关键字;5)Example4_24和 Example4_25相关知识点:接口的定义和实现;6)Example4_25和 Example4_26相关知识点:接口回调;7)Example4_33相关知识点:异常类;8)Example4_34相关知识点:自定义异常类;9)Example4_35相关知识点:Class类;7、思考题1.什么是继承?不同的访问限定符(如public)所定义的属性或方法,都能被继承么,哪些能继承哪些不能不被继承?2.什么是多态?3.什么是向上转型?为什么要使用向上转型;向上转型在抽象类和接口中的定义和使用是如何实现的?。

《java面向对象程序设计-继承和多态》教案

《java面向对象程序设计-继承和多态》教案

1. 理解继承的概念及其在Java中的应用。

2. 掌握如何使用extends关键字来实现继承。

3. 理解多态的概念及其在Java中的应用。

4. 掌握如何使用implements关键字来实现多态。

5. 能够运用继承和多态编写更加灵活和可扩展的Java程序。

二、教学内容1. 继承的概念和作用引入继承的概念,解释其作用和意义。

通过实例演示继承的效果。

2. 使用extends关键字实现继承介绍extends关键字的用法。

示例演示如何使用extends实现继承。

3. 多态的概念和作用引入多态的概念,解释其作用和意义。

通过实例演示多态的效果。

4. 使用implements关键字实现多态介绍implements关键字的用法。

示例演示如何使用implements实现多态。

5. 继承和多态的联合使用解释继承和多态联合使用的效果。

通过实例演示继承和多态的联合使用。

1. 采用案例教学法,通过具体的实例来讲解继承和多态的概念和使用方法。

2. 使用互动式教学法,鼓励学生积极参与讨论和提问,以加深对知识点的理解。

3. 使用代码演示和调试,让学生直观地看到继承和多态的效果。

四、教学步骤1. 引入继承的概念,解释其作用和意义。

2. 介绍extends关键字的用法,并通过示例演示如何使用extends实现继承。

3. 引入多态的概念,解释其作用和意义。

4. 介绍implements关键字的用法,并通过示例演示如何使用implements实现多态。

5. 示例演示继承和多态的联合使用。

五、教学评估1. 课堂练习:要求学生编写简单的Java程序,运用继承和多态来实现特定的功能。

2. 课后作业:布置相关的编程作业,要求学生运用继承和多态来解决实际问题。

3. 课堂讨论:鼓励学生积极参与讨论,提问和解答问题,以评估学生对知识点的理解程度。

六、教学内容(续)6. 继承和多态的应用场景分析实际编程场景中继承和多态的运用。

通过案例展示继承和多态如何提高代码的可复用性和可维护性。

《java面向对象程序设计继承和多态》教案

《java面向对象程序设计继承和多态》教案

《Java面向对象程序设计-继承和多态》教案一、教学目标:1. 理解继承的概念及其在Java中的应用。

2. 掌握如何使用extends关键字来实现继承。

3. 理解多态的概念及其在Java中的应用。

4. 掌握如何使用implements关键字来实现多态。

5. 能够运用继承和多态编写更简洁、易维护的Java代码。

二、教学内容:1. 继承的概念和原理2. extends关键字的用法3. 多态的概念和原理4. implements关键字的用法5. 继承和多态的应用案例三、教学方法:1. 讲授:讲解继承和多态的基本概念、原理和用法。

2. 演示:通过示例代码展示继承和多态的应用。

3. 练习:让学生动手编写代码,加深对继承和多态的理解。

4. 讨论:分组讨论实际应用场景中如何使用继承和多态,分享心得。

四、教学准备:1. 讲义:提供详细的继承和多态概念、用法讲解。

2. 示例代码:准备继承和多态的示例代码。

3. 编程环境:确保学生能够使用IDE(如Eclipse、IntelliJ IDEA等)或文本编辑器进行代码编写。

五、教学步骤:1. 引入:简要介绍继承和多态的概念,激发学生的兴趣。

2. 讲解:详细讲解继承和多态的原理、用法,并通过示例代码进行演示。

3. 练习:布置练习题,让学生动手编写代码,巩固所学内容。

4. 讨论:组织学生分组讨论实际应用场景中如何使用继承和多态,分享心得。

5. 总结:回顾本节课所学内容,强调重点知识点。

6. 作业:布置课后作业,巩固所学知识。

六、教学评估:1. 课堂互动:观察学生在课堂上的参与程度,了解他们对继承和多态的理解程度。

2. 练习作业:评估学生的练习作业,检查他们对继承和多态的掌握情况。

3. 课后反馈:收集学生的课后反馈,了解他们对课堂内容的满意度和建议。

七、教学拓展:1. 深入讲解Java中的继承和多态的其他高级特性,如接口、抽象类、动态绑定等。

2. 通过案例分析,让学生了解继承和多态在实际项目中的应用和优势。

《java面向对象程序设计继承和多态》教案

《java面向对象程序设计继承和多态》教案

《Java面向对象程序设计-继承和多态》教案第一章:引言1.1 课程简介本课程旨在帮助学生掌握Java面向对象程序设计中的继承和多态概念。

通过学习,学生将能够理解继承和多态的原理,并能够运用它们解决实际编程问题。

1.2 课程目标理解继承的概念和原理掌握如何使用继承来实现代码复用理解多态的概念和原理掌握如何使用多态来实现动态绑定第二章:继承2.1 继承的概念介绍继承的定义和作用解释为什么使用继承2.2 继承的语法介绍如何使用extends关键字实现继承解释继承中的构造函数和继承关系2.3 继承的实现演示如何使用继承来复用代码解释继承的层次结构和菱形继承第三章:多态3.1 多态的概念介绍多态的定义和作用解释多态的好处3.2 方法重写解释方法重写的概念和规则演示如何使用方法重写来实现多态3.3 方法重载解释方法重载的概念和规则演示如何使用方法重载来提高代码可读性第四章:继承和多态的案例分析4.1 案例一:动物和鸟类使用继承和多态来定义动物和鸟类的关系实现动物和鸟类的属性和方法4.2 案例二:形状和圆形使用继承和多态来定义形状和圆形的关系实现形状和圆形的属性和方法第五章:总结和练习5.1 课程总结回顾继承和多态的概念和原理强调继承和多态在面向对象程序设计中的重要性5.2 练习题提供一些练习题,以帮助学生巩固所学知识第六章:继承和多态的深入理解6.1 继承的类型解释接口继承和类继承的区别讨论继承的优点和缺点6.2 多态的应用探讨多态在日常编程中的应用场景分析多态如何提高程序的可扩展性和灵活性第七章:Java中的继承和多态实例7.1 继承实例:汽车和摩托车通过实例展示如何使用继承来创建汽车和摩托车类演示如何通过继承来扩展属性和方法7.2 多态实例:支付接口和具体的支付方式创建一个支付接口和多个具体的支付方式类演示如何使用多态来实现不同的支付方法第八章:继承和多态的陷阱与最佳实践8.1 继承的陷阱讨论继承可能带来的过度耦合问题解释如何避免继承的陷阱8.2 多态的陷阱分析多态可能导致的类型不匹配问题探讨如何安全地使用多态8.3 最佳实践提供使用继承和多态的最佳实践指南强调代码可读性和可维护性第九章:继承和多态在设计模式中的应用9.1 设计模式简介介绍设计模式的概念和重要性解释设计模式与继承和多态的关系9.2 继承和多态在设计模式中的应用案例通过案例分析展示继承和多态如何在设计模式中发挥作用讨论设计模式如何提高程序设计的质量和可复用性第十章:课程回顾与拓展学习10.1 课程回顾总结本课程的重点内容和关键概念强调继承和多态在实际编程中的应用10.2 拓展学习资源提供一些拓展学习的资源和建议鼓励学生继续深入学习面向对象程序设计的其他方面第十一章:继承和多态的实际应用案例11.1 案例分析:图形库的设计通过分析图形库的设计,展示继承和多态如何用于实现复杂的图形操作。

Java程序设计教学做一体化教程第5章继承与接口

Java程序设计教学做一体化教程第5章继承与接口
super();
2019/7/12
第 14 页
5.3.1 核心知识 _2
class Student { int number; Student() { } Student(int number) { this.number = number; }
} class UniverStudent extends Student {
(2)如果类里定义了一个或多个构造方法,那么Java不提 供默认的构造方法(不带参数的构造方法),因此,当在父类 中定义多个构造方法时,应当包括一个不带参数的构造方法, 以防子类省略super时出现错误。
2019/7/12
第 18 页
5.3.4 实践环节 Application5_6.java
2019/7/12
对象可以成为其子类对象的上转型对象,那么该对象就可以调用子类重写的
方法
2019/7/12
第 30 页
5.6.2 能力目标 掌握用抽象类的对象做上转型对象,并体现子类的多态 。
2019/7/12
第 31 页
5.6.3 任务驱动 将下列Application5_10.java中的【代码】替换为程序代码。 Animal.java Dog.java Cat.java
(3) 如 果 一 个 类 是 另 一 个 类 的 子 类 , 那么UML通过使用一个实线连接两个类的 UML图来表示二者之间的继承关系,实线 的起始端是子类的UML图,终点端是父类 的UML图,但终点端使用一个空心的三角 形表示实线的结束,如图5.2。
2019/7/12
第7页
5.1.4 实践环节 Application5_2.java
程序运行效果如图5.8。
2019/7/12
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
继承与接口
本章内容
• • • • 继承派生形式 多态与重载 包 接口
继承派生形式
• 类声明用关键字extends创建子类: public class SubClass extends SuperClass { …… } • 类声明不加public,默认是友好类,使用友好类时, 要保证在同一包。 • 不能用protected和private修饰类 • 子类继承父类中不是private的变量和方法 • 子类变量和父类变量同名,父类变量被隐藏
//Class1.java
package package1; public class class1{ } //Class1.java package package2; public class class1{ } //Test.java package package3; public class test{ public static void main(String[ ] args){ package1.class1 c1=new package1.class1( ); package2.class1 c2=new package2.class1( ); } }
子类是对父类的扩充或修正
bicycle (super class) sub class
Mountain bikes
Racing bikes
Tandem bikes
class Car { int color_number; private int door_number; int speed; public void push_break( ) { speed=0; } private void add_oil( ) { … } }
{ Animal a;
a=new Animal("只是动物");
a.ShowInfo( ); a.cry( ); a = new Fish("鲤鱼",20); a.ShowInfo( ); a.cry( ); } //main }//less
多态
• 子类重写父类的方法时,会出现多态性 class Base { public void test( ){ System.out.println("Base"); }//test( ) }//Base class Subclass extends Base{ public void test( ){ System.out.println("Subclass"); }//test( ) }//Subclass
class Fish extends Animal{
int SwimSpeed;
Fish(String n,int s){ super(n); SwimSpeed=s; }//Fish( ) public void ShowInfo( ){
System.out.println("鱼\t"+name+"\t");
重载
• 类中方法名字相同 • 参数不同(个数或者类型不同) • 方法的返回类型和参数名字不参与比较 class Test { public void t1(int i){ } public void t1(int i, String s){ } public void t1(String s, int i){ }
包的创建
• பைடு நூலகம்码体的第一个语句 package 包名;
package chapter1.test;(包名chapter1.test)
• 使用包语句,目录中必须包含如下结构 …\chapter1\test,并把源文件保存在该目录下 • 编译 c:1000\chapter1\test> javac cat.java • 运行必须必须到chapter1.test的上层目录1000运 行 c:1000>java chapter1.test.cat
class Trash_Car extends Car { double amount; public void fill_trash( ) { …} public void push_break( ) { speed=speed-10; } }
方法的覆盖与重写

覆盖——子类重新定义父类已有方法 this——当前类本身; super——当前类的直接父类 子类构造方法中一般把父类构造方法super 作为第一条语句
class Animal{ protected String name; Animal(String name){ = name; }//Animal( ) public void ShowInfo( ){ System.out.println("动物名\t"+name+"\t\t"); }//ShowInfo( ) public void cry( ){ System.out.println("叫声\n"); }//cry( ) }//Animal
System.out.println("游泳速度:"+SwimSpeed); }//ShowInfo public void cry(){ System.out.println("\t泡泡\n");}//cry }//Fish
public class less
{ public static void main(String args[ ])
包的使用
chapter1.test.Test t1=new chapter1.test.Test( );
• 加载需要使用的类: import chapter1.test.Test; Test t1=new Test( );
• 加载整个包: import chapter1.test.*; Test t1=new Test( );
private void t1( ){ } × public String t1( ){return "yes";} ×
}
包(package)
名称管理 例:包 package1中包含类 Class1; 包 package2中也包含类 Class1 ; 访问可通过类的全路径 (1) package1.Class1 (2) package2.Class1 权限控制 同一个包内的类可相互访问,对于一个包内的 非public类其他包内的类无法访问。
相关文档
最新文档