Microsoft Word - chap12.doc



Similar documents
運算子多載 Operator Overloading

Chapter 9: Objects and Classes

Microsoft Word - 投影片ch11

Microsoft Word - chap10.doc

新・解きながら学ぶJava

Microsoft Word - 物件導向編程精要.doc

<4D F736F F F696E74202D20332D322E432B2BC3E6CFF2B6D4CFF3B3CCD0F2C9E8BCC6A1AAD6D8D4D8A1A2BCCCB3D0A1A2B6E0CCACBACDBEDBBACF2E707074>

投影片 1

詞 彙 表 編 號 詞 彙 描 述 1 預 約 人 資 料 中 文 姓 名 英 文 姓 名 身 份 證 字 號 預 約 人 電 話 性 別 2 付 款 資 料 信 用 卡 別 信 用 卡 號 信 用 卡 有 效 日 期 3 住 房 條 件 入 住 日 期 退 房 日 期 人 數 房 間 數 量 入

前言 C# C# C# C C# C# C# C# C# microservices C# More Effective C# More Effective C# C# C# C# Effective C# 50 C# C# 7 Effective vii

Microsoft PowerPoint - course2.ppt

Microsoft PowerPoint - ch6 [相容模式]

KillTest 质量更高 服务更好 学习资料 半年免费更新服务

KillTest 质量更高 服务更好 学习资料 半年免费更新服务

Chapter 9: Objects and Classes

The Embedded computing platform

Microsoft PowerPoint - P766Ch06.ppt

OOP with Java 通知 Project 4: 4 月 19 日晚 9 点

OOP with Java 通知 Project 4: 4 月 18 日晚 9 点 关于抄袭 没有分数

(procedure-oriented)?? 2

利用Java技术编写桌面软件基础

Learning Java

Microsoft Word - ch04三校.doc

JavaIO.PDF

Microsoft PowerPoint - L17_Inheritance_v4.pptx

Strings

Java

软件工程文档编制


EJB-Programming-4-cn.doc

Microsoft Word - 01.DOC

EJB-Programming-3.PDF

雲端 Cloud Computing 技術指南 運算 應用 平台與架構 10/04/15 11:55:46 INFO 10/04/15 11:55:53 INFO 10/04/15 11:55:56 INFO 10/04/15 11:56:05 INFO 10/04/15 11:56:07 INFO

Strings

untitled

主程式 : public class Main3Activity extends AppCompatActivity { ListView listview; // 先整理資料來源,listitem.xml 需要傳入三種資料 : 圖片 狗狗名字 狗狗生日 // 狗狗圖片 int[] pic =new

基于CDIO一体化理念的课程教学大纲设计

エスポラージュ株式会社 住所 : 東京都江東区大島 東急ドエルアルス大島 HP: ******************* * 关于 Java 测试试题 ******

ebook

weblogic

javaexample-02.pdf

KillTest 质量更高 服务更好 学习资料 半年免费更新服务

9, : Java 19., [4 ]. 3 Apla2Java Apla PAR,Apla2Java Apla Java.,Apla,,, 1. 1 Apla Apla A[J ] Get elem (set A) A J A B Intersection(set A,set B) A B A B

OOP with Java 通知 Project 3: 3 月 29 日晚 9 点 4 月 1 日上课

Microsoft PowerPoint - chap08.ppt

Swing-02.pdf

1: public class MyOutputStream implements AutoCloseable { 3: public void close() throws IOException { 4: throw new IOException(); 5: } 6:

Java java.lang.math Java Java.util.Random : ArithmeticException int zero = 0; try { int i= 72 / zero ; }catch (ArithmeticException e ) { // } 0,

D C 93 2

OOP with Java 通知 Project 4: 5 月 2 日晚 9 点

Microsoft PowerPoint - 14Threads.ppt

KillTest 质量更高 服务更好 学习资料 半年免费更新服务

Microsoft PowerPoint - plan08.ppt

RunPC2_.doc

Microsoft PowerPoint htm

(TestFailure) JUnit Framework AssertionFailedError JUnit Composite TestSuite Test TestSuite run() run() JUnit

Java Access 5-1 Server Client Client Server Server Client 5-2 DataInputStream Class java.io.datainptstream (extends) FilterInputStream InputStream Obj

OOP with Java 通知 Project 4: 4 月 19 日晚 9 点

OOP with Java 通知 Project 4: 推迟至 4 月 25 日晚 9 点

時 間 : 180 分 鐘 四 考 試 特 點 (a) 程 式 易 懂 撰 寫 簡 單, 不 必 經 過 長 時 間 的 課 程 訓 練 (b) 物 件 導 向 的 程 式 設 計, 將 重 點 擺 在 資 料 介 面 的 技 巧 (c)java 有 一 個 很 完 善 且 分 散 式 的 程 式

2 Java 语 言 程 序 设 计 教 程 简 单 性 Java 语 言 的 语 法 与 C 语 言 和 C++ 语 言 很 接 近, 使 得 大 多 数 程 序 员 很 容 易 学 习 和 使 用 Java 另 一 方 面,Java 丢 弃 了 C++ 中 很 少 使 用 的 很 难

用手機直接傳值不透過網頁連接, 來當作搖控器控制家電 ( 電視遙控器 ) 按下按鍵發送同時會回傳值來確定是否有送出 問題 :1. 應該是使用了太多 thread 導致在傳值上有問題 2. 一次按很多次按鈕沒辦法即時反應

單步除錯 (1/10) 打開 Android Studio, 點選 Start a new Android Studio project 建立專案 Application name 輸入 BMI 點下 Next 2 P a g e

附录J:Eclipse教程

chp6.ppt


CHAPTER VC#

Microsoft PowerPoint - EmbSys102_JavaOOP [相容模式]

untitled

一、

Microsoft Word - chap05.doc

extend

OOP with Java 通知 Project 4: 5 月 2 日晚 9 点

(Microsoft Word - \251I\250D\245D\246W

國家圖書館典藏電子全文

untitled

<4D F736F F D20C8EDC9E82DCFC2CEE7CCE22D3039C9CF>

Fun Time (1) What happens in memory? 1 i n t i ; 2 s h o r t j ; 3 double k ; 4 char c = a ; 5 i = 3; j = 2; 6 k = i j ; H.-T. Lin (NTU CSIE) Referenc

基于ECO的UML模型驱动的数据库应用开发1.doc

06-4.indd

CC213

java2d-4.PDF

1 下列类头定义中, 正确的是 面向对象程序设计网络课程 A class x { } B public x extends y { } C public class x extends y {.} D class x extends y implements y1 { } 2 现有两个类 A B,

建模与图形思考

2009年3月全国计算机等级考试二级Java语言程序设计笔试试题

JBuilder Weblogic

提纲 1 2 OS Examples for 3

電機工程系認可證照清單 /7/1

第十章 虛擬函數 (Virtual Functions)

1.JasperReport ireport JasperReport ireport JDK JDK JDK JDK ant ant...6

0 0 = 1 0 = 0 1 = = 1 1 = 0 0 = 1

IoC容器和Dependency Injection模式.doc

任務二 : 產生 20 個有炸彈的磚塊, 放在隨機的位置編輯 Block 類別的程式碼 import greenfoot.; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo) Write a description of class

《大话设计模式》第一章

Java 1 Java String Date

09 (File Processes) (mkdir) 9-3 (createnewfile) 9-4 (write) 9-5 (read) 9-6 (deletefile) 9-7 (deletedir) (Exercises)

p.2 1 <HTML> 2 3 <HEAD> 4 <TITLE> </TITLE> 5 </HEAD> 6 7 <BODY> 8 <H3><B> </B></H3> 9 <H4><I> </I></H4> 10 </BODY> </HTML> 1. HTML 1. 2.

untitled

计 算 机 系 统 应 用 年 第 25 卷 第 4 期 线 程 的 复 用 [2,3]. 通 常 情 况 下, 服 务 器 端 程 序 在 启 动 时 创 建 若 干 数 量 的 线 程 对 象 并 缓 存 起 来, 此 时 它 们 处 于

自由軟體教學平台

Transcription:

94 12. Inheritance in Java Java 的類別同樣有繼承的功能, 衍生類別同樣會繼承基本類別所有的資料成員與函式成員, 當繼承而來的函式成員不適於衍生類別時, 同樣可以在衍生類別之定義內將其重新定義 (override), 並可進一步加入新的成員 ( 資料或函式 ), 以符合衍生類別應有的屬性與行為 一基本類別 ( 父類別 ) 可以有需多繼承它的衍生類別 ( 子類別 ), 與 C++ 不同的是, 一子類別只能繼承一個父類別, 多重繼承於 Java 中不允許 Java 只有一種繼承模式, 並不像 C++, 有 public protected 與 private 三種繼承模式 在多型方面,Java 沒有非虛擬函式,Java 的每一個函式成員, 不需明確宣告, 均即是虛擬函式,Java 所有物件均必定透過參考來操作, 表現出多型的行為 12.1 Extending Classes in Java Java 定義子類別時, 是使用 extends 關鍵字, 來繼承父類別 Java 之子類別隱含著一個稱為 super 的參考, 可用其來引用父類別之建構函式 ( 不會繼承給衍生類別 ), 於函式重新定義 (override) 時呼叫父類別之函式成員, 亦可用來明確地對繼承自父類別之公開資料成員做存取 class Employee private String name; private int deptid; public Employee(String n, int d) name = n; deptid = d;

95 public void print( ) System.out.println(name);.. class Manager extends Employee private int rank;. public Manager(String n, int d, int r) super(n, d); // initialize base members rank = r; // initialize local members public void print( ) // override print super.print( ); //calling print() of base class System.out.println(rank);.. 程式範 oop_ex109.java 1. Manager 類別繼承了 Employee 類別, 這項指定出現於 circle 類別定義的第一行,extends 代表了繼承 2. 衍生類別會繼承所有基本類別的成員, 但於衍生類別的建構函式中, 無法直接存取基本類別的私有成員 (x, y), 為了對繼承自基本類別的私有成員初始化, 必須要使用基本類別的建構函式, 呼叫方式是使用 super 關鍵字 3. 如需要將繼承自基本類別的函式成員, 依衍生類別的需要修改或重新定義

96 ( 例如 print), 則我們須於衍生類別中重新宣告此一函式成員, 並提供其新的定義, 修改或重新定義後的函式將於衍生類別中取代繼承自基本類別的定義 4. 如果對某一繼承自基本類別的函式成員, 我們不需完全更改其原本的定義, 只需要加入新的功能 ( 例如 print), 我們可以不必重寫已定義於原基本類別之原函式的部分, 而只要呼叫此一原函式, 呼叫方式同樣是使用 super 關鍵字 5. super 關鍵字可用來明確地對父類別之公開資料成員做存取 (vs. this 關鍵字 ) 6. Java 的所有函式, 不需明確宣告, 即是虛擬函式, 表現出多型的行為 12.2 Final Keyword Java 中, 宣告為 final 之資料成員, 其值不可被修改, 而宣告為 final 之類別, 其不可被繼承 程式範 oop_ex110.java Java 之 final 類別與 C++ 之 const 類別意義大不相同 12.3 Abstract Methods and Abstract Classes in Java Java 的類別同樣可宣告為無法產生實體的抽象類別 (Abstract Classes), 為其子類別定義共同應實做的介面 C++ 中只定義函式的呼叫方法, 而不提供實作內容的純虛擬函式,Java 中稱為抽象方法 (Abstract Methods) Java 的抽象類別與抽象方法, 需使用 abstract 關鍵字明確宣告 abstract class shape public abstract void move( ) ; public abstract void draw( ) ;

97 ; 程式範 oop_ex111.java 1. 抽象方法不能有 ( method body) 2. 具有抽象方法之類別, 需明確以 abstract 關鍵字宣告為抽象類別 3. 抽象類別, 無法產生實體, 但可產生其參考 4. 衍生類別繼承了於上層中尚未定義任何實作內容的抽象方法, 如此衍生類別 沒有對其提供實作加以定義, 則此函式仍為抽象方法, 此衍生類別亦為抽象 類別 12.4 Interface in Java Java 之類別只能繼承 (extends) 一個類別, 但可以實作 (implements) 一個以上的介面 (Interface) 介面的定義與類別很類似, 但介面之成員只能是常數與抽象方法, 故介面可視為沒有資料成員, 且其方法均為虛擬方法的虛擬類別 介面的作用, 是定義了繼承其之類別均需要有 ( 實作 ) 的共同能力, 但不提供任何實作內容, 也不提供任何資料成員, 給子類別繼承 Java 以介面之設計, 來避免 C++ 之多重繼承所可能造成的重複繼承問題 相對於 extends, 類別對於介面的實作, 是使用 implements 關鍵字 interface printable public static final int count = 0 ; public abstract void print( ) ; public abstract void printtofile(string filename) ; ;

98 class circle extends shape implements printable, scaleable. public void print( )System.out.println("do print circle"); public void printtofile(string filename)system.out.println("do print circle on"+filename);.. 程式範 oop_ex112.java 1. 介面之成員只能是常數與抽象方法 2. 介面所定義之抽象方法均無實作內容, 故繼承 (implements) 介面的類別需對繼承的每一個抽象方法提供實作, 例如 triangle circle square, 否則需宣告為抽象類別例如 shape 12.5 Interface Inheritance 介面與類別一樣, 可以繼承, 同樣可使用 extends 關鍵字產生子介面, 子介面繼承父介面所有的成員 ( 抽象函式 ), 並可新增屬於自己的抽象函式或常數 程式範 oop_ex113.java 1. 繼承而產生仍為介面, 故新增成員只能是常數與抽象方法 2. 與類別不同, 子介面可繼承多個介面 12.6 instanceof operator in Java Java 提供了 instanceof 運算子, 用來檢查 某個物件 是不是 某個類別之物件 也可以檢查 某個物件 是不是有實作某個介面 boolean flag1 = ci instanceof circle; boolean flag2 = ci instanceof printable;

99 程式範 oop_ex114.java 1. 某個物件 是其父類別之物件 2. 某個物件 實作了某子介面, 亦實作了其父介面 3. Java 物件均表現出多型行為 12.7 Object Cloning in Java Java 的物件, 均是透過參考來做操作, 對於參考間以等號相連, 並非對其所各自參照的物件資料作拷貝, 而拷貝的是位址值, 故 Java 無法如 C++ 之拷貝指定運算子, 複製產生物件 對於複製物件,Java 提供了 Object Cloning 之機制, 即一物件可依照本身的狀態複製產生一資料相同的新物件, 並傳回新物件的位址, 如下 classx ref1 = (classx) ref2.clone( ); clone( ) 無法直接使用, 自訂類別需依其本身的資料結構, 有如 C++ 的拷貝指定運算子, 實作其內容,Java 的設計是, 欲提供 clone 功能的類別, 均需 implement 內建的 Cloneable 介面, 並提供實作 程式範 oop_ex115.java 1. Cloneable 為內建的介面 2. Java 所有類別之 root 為 Object 類別, 對於傳回值可能是各種不同自訂類別物件的情況, 例如 clone( ), 可以用 Object 作為傳回值型態來做為涵蓋所有情況之處理, 因為所有的物件均可當作 Object 的物件, 傳回之後再做型別轉換 3. tostring( ) 為定義於 Object 類別中的函式成員, 所有類別均有繼承它, 只要對此函式依類別內容做重新定義, 其於必要時可被呼叫將物件的資料轉成字串, 例如本範例, 我們可使用參照到 Person 物件之參考直接做輸出 4. Java 有非常豐富的內建類別與介面, 針對各種應用, 訂定了基本的架構, 供程式設計者進一步的延伸

100 12.8 Java Standard Packages( 標準類別庫 ) java.lang java.util java.io java.math java.text java.awt java.applet java.net java.rmi java.sql java.security java.beans The core language classes, such as String, Thread, Class, and so on. Classes for general utility. Input/Output and some file system manipulation Mathematical manipulation. Text manipulation, such as formatting and parsing numbers and dates, sorting/comparing strings, and message lookup, etc. The Abstract Window Toolkit abstract layer for writing platform-independent graphical user interfaces. The Applet class and related types for writing applets that can be run in HTML browsers. Networking classes for sockets, URLs, and so on. Remote Method Invocation, which lets you invoke methods on objects running in different virtual machines, usually on different host computer. The JDBC package for accessing relational database from Java. Encryption, authentication, digital signatures, and other useful security-related code. For writing user-composable code.