辅导课程十五.

Slides:



Advertisements
Similar presentations
软件编程基础 一、程序的编辑 Java 源程序是以 Java 为后缀的简单的文本文件,可以用各种 Java 集成开发环境中的源代码编辑器来编写,也可以用其他文 本编辑工具,如 Windows 中的记事本或 DOS 中的 EDIT 软件等。 利用文字编辑器编写下列程序 public class Hello.
Advertisements

系統分析與設計 楊子青 H-1 H 、物件導向技術 n 物件導向的基本概念 – 物件、類別 – 封裝、繼承 – 同名異式 ( 多型 ) 、超荷 ( 過載 ) n 物件導向分析與設計及塑模工具 n UML 塑模工具.
第三讲 面向对象(上).
3.2 Java的类 Java 类库的概念 语言规则——程序的书写规范 Java语言 类库——已有的有特定功能的Java程序模块
JAVA 编 程 技 术 主编 贾振华 2010年1月.
项目7 面向对象高级.
项目6 通用堆栈.
Java程序设计教程 第一讲 Java概述.
四資二甲 第三週作業 物件導向程式設計.
面向对象的程序设计(一).
面向对象程序设计(Java) 徐志红
第一章 面向对象程序设计.
類別與物件 Class & Object.
Ch07 介面與多重繼承 物件導向程式設計(II).
第11讲 包和接口(一) 多态的两个实例 包的定义 接口的定义 1/.
重庆大学计算机学院 《Java程序设计之网络编程》 教学课件 重庆大学计算机学院
第10讲 Java面向对象编程基础(4) 教学目标 主要内容.
1 Department of Computing.
第六章 JAVA语言中的面向对象特性 6.1 类 6.2 对象 6.3 面向对象的特性 6.4 抽象类、接口和Inner Class.
Ch08 巢狀類別 物件導向程式設計(II).
程式設計實作.
第4章 回顾 1.面向对象的三大特征:封装、继承、多态 2.类与对象的关系:类是对象的模板,对象是类的实例,类只能通过对象才可以使用。 3.类的组成:属性、方法、构造方法、代码块、内部类 4.创建对象的格式:类名称 对象名称=new 类名称() 5.类属于引用数据类型。进行引用传递时,传递的是堆内存的使用权。
H、物件導向技術 物件導向的基本概念 物件、類別 封裝、繼承 同名異式(多型) 、超荷(過載) 物件導向分析與設計及塑模工具 UML塑模工具.
Java基础 JavaSE异常.
Classes Lecturer: 曾學文.
程序與函數的類別方法 目的:模組化程式設計 方法:由上而下設計 注意事項:(1)獨立性 (2)結合問題 (3)子問題間的溝通.
第六章 类的扩展与继承.
Java 程式設計 講師:FrankLin.
辅导课程十六.
西南科技大学网络教育系列课程 高级语程序设计(Java) 第五章 继承、接口与范型.
欢乐玩转单元测试之JUnit 讲师:FREE QQ:
程式設計實作.
第2章回顾 标识符:不用记,动手 关键字:if, else, switch, for, while, do, break, continue, void, …… 局部变量和成员变量 ①变量作用域 ②内存布局 基本数据类型 ①4类8种 ②互相转换 流程控制语句 ①分支 if……else, switch.
Java语言程序设计 第五部分 Java异常处理.
Java习题解析.
Java程序设计 第9章 继承和多态.
辅导课程六.
Ch01 物件與類別複習 物件導向系統實務.
辅导课程十三.
C#面向对象程序设计 $7 继承和多态性.
類別的繼承 Vehicle Car.
中国矿大计算机学院杨东平 第5章 接口和包 中国矿大计算机学院杨东平
3.1 数据类型 3.2 标识符与关键字 3.3 常量 3.4 变量 3.5 运算符与表达式 3.6 一个编程实例
第9讲 Java的继承与多态(一) 类的继承 子类的创建 方法覆盖.
Ch02-基礎語法.
C/C++/Java 哪些值不是头等程序对象
* 單元:電腦與問題解決 主題:Java物件導向程式設計-類別與物件 台南縣國立善化高中 蕭嘉民 老師
第16章 虛擬與多形 16-1 虛擬函數 16-2 純虛擬函數與抽象類別 16-3 多形 16-4 虛擬繼承與虛擬解構子.
第7章 繼承/多型/介面 注意: 本投影片僅供本書上課教師使用,非經同意請勿上網轉載或供拷貝.
辅导课程八.
JAVA 编 程 技 术 主编 贾振华 2010年1月.
$9 泛型基础.
C#面向对象程序设计 $6 深入理解类.
第二章 Java基本语法 讲师:复凡.
Java程式初體驗大綱 大綱 在學程式之前及本書常用名詞解釋 Hello Java!程式 在Dos下編譯、執行程式
主编:钟元生 赵圣鲁.
本节内容 类成员的访问控制 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
Chapter 18 使用GRASP的对象设计示例.
龍老師我不會Debug QQ.
辅导课程十一.
方法進階及物件導向基礎 Lecturer: 楊昌樺.
第6單元 6-1 類別的繼承 (Class Inheritance) 6-2 抽象類別 (Abstract Class)
辅导课程十二.
C++语言程序设计 C++语言程序设计 第九章 类的特殊成员 第十一组 C++语言程序设计.
JAVA 程式設計與資料結構 第三章 物件的設計.
判斷(選擇性敘述) if if else else if 條件運算子.
輸出執行結果到螢幕上 如果要將執行結果的文字和數值都「輸出」到電腦螢幕時,程式要怎麼寫? class 類別名稱 {
第二章 Java基本语法 讲师:复凡.
第6章 继承和多态 伍孝金
Summary
Presentation transcript:

辅导课程十五

动态绑定/多态 (dynamic-binding late-binding runtime-binding polymorphism) 动态绑定是指“在执行期间(而非编译期)判断所引用对象的实际类型,根据其实际的类型调用其相应的方法。 上面例子中,根据 Lady 对象的成员变量 pet 所引用的不同的实际类型而调用相应的 enjoy()方法。 TestPolymorph/Test.java

heap stack name:”catname” enjoy() Animal:enjoy() c:xx code seg

heap stack name:”catname” enjoy() eyeColor:”blue” Animal:enjoy() Cat:enjoy() c:xx code seg

heap stack name:”catname” enjoy() eyeColor:”blue” Animal:enjoy() Cat:enjoy() c:xx code seg

heap stack name:”catname” enjoy() eyeColor:”blue” name:”l1” Animal:pet l1:xx Animal:enjoy() Cat:enjoy() c:xx code seg

根据上面的程序,构造“Bird”类,继承“Animal”类。要求: 增加“毛色(String)”属性。 多态的优点 课堂练习 TestPolymorph/Test.java 根据上面的程序,构造“Bird”类,继承“Animal”类。要求: 增加“毛色(String)”属性。 具有和“Dog”类相似的重载构造方法。 重写“Animal”类的enjoy()方法 测试。思考:需要修改“Lady”类的方法吗?

要有继承;要有重写;父类引用指向子类对象 多态的优点 class Bird extends Animal { private String featherColor; Bird(String n,String f) { super(n); featherColor = f; } public void enjoy() { System.out.println(“鸟叫声...... “); public class Test { public static void main(String args[]){ Bird b = new Bird(“birdname“, “green“) Lady l3 = new Lady(“l3“, b)); l3.myPetEnjoy(); } 多态的存在要有3个必要条件: 要有继承;要有重写;父类引用指向子类对象

抽 象 类 用abstract关键字来修饰一个类时,这个类叫做抽象类;用abstract来修饰一个方法时,该方法叫做抽象方法(相当于C++中的纯虚函数)。 含有抽象方法的类必须被声明为抽象类,抽象类必须被继承,抽象方法必须被重写。如果重写不了,应该声明自己为抽象。 抽象类不能被实例化。 抽象方法只需声明,而不需实现。 abstract class Animal { private String name; Animal(String name) { this.name = name; } public abstract void enjoy(); class Cat extends Animal { private String eyesColor; Cat(String n,String c) { super(n); eyesColor = c; public void enjoy() { System.out.println(“猫叫声....."); TestAbstract/Test.java

heap stack name:”catname” enjoy() c:xx code seg

heap stack name:”catname” enjoy() eyeColor:”blue” Cat:enjoy() c:xx code seg

heap stack name:”catname” enjoy() eyeColor:”blue” Cat:enjoy() c:xx code seg

heap stack name:”catname” enjoy() eyeColor:”blue” name:”l1” Animal:pet l1:xx Cat:enjoy() c:xx code seg