managinginheritance内容摘要:
要求 此類別 不提供 constructor 供外部存取(為 private) 要提供三個 class methods 來建立 Rectangle 物件 • 第一個是使用預設長寬:長 8,寬 4( createRect) • 第二個是可以讓使用者自行指定( createRect) • 第三個複製矩形( cloneRect) 顯示目前的長、寬之值( showLW) 取得目前矩形之面積( getArea) 畫矩形,由 * 構成邊長( drawRect) National Taiwan University Department of Computer Science and Information Engineering Your Turn Hint // 建構元 private Rectangle(){ … } // 另一個建構元 private Rectangle(int length, int width){ … } // 此建構元提供給 cloneObj 用,用以複製 private Rectangle(Rectangle obj){ … } // 提供一個可以製造長方形的 class method static Rectangle createRect() { … } // 提供一個可以製造且自行設定長方形的 class method static Rectangle createRect(int len, int width) { … } // 複製此長方形 static Rectangle cloneRect(Rectangle obj) { … } // 顯示現在的長、寬 void showLW() { … } // 取得現在的面積 double getArea(){ … } // 畫出此長方形 void drawRect(){ … } National Taiwan University Department of Computer Science and Information Engineering 物件導向三大特性 封裝 (Encapsulation) 設計 Class, 決定要將哪些屬性,方法,事件封入類別中的動作叫做封裝。 讓程式碼可以以 Class為單位分類,並讓文件撰寫可以用物件導向模式撰寫 (., class diagram)。 繼承 (Inheritance) 設計 Class 時,先利用現存 Class 作為 “祖先”,再加以增加或修改功能的動作叫繼承。 讓程式碼可以輕易地重複使用,並形成樹狀結構之 class diagram。 同名異型 (Polymorphism) 呼叫相同的函式,卻會出現不同的行為的現象,稱為同名異型。 分為 “ overriding” 及 “ overloading”。 擴充既有程式碼之功能。 National Taiwan University Department of Computer Science and Information Engineering 物件導向三大特性 封裝 (Encapsulation) 設計一個 Class 的屬性,方法,事件,稱為 “封裝” 一個類別。 人類 屬性: 身高 體重 年齡 方法: 走路 跑步 事件: 被打 驚嚇 開心 National Taiwan University Department of Computer Science and Information Engineering 物件導向三大特性 繼承 (Inheritance) 設計 Class 時,先利用現存 Class 作為 “祖先”, 再加以增加或修改功能的動作叫繼承。 讓程式碼可以輕易地重複使用,並形成樹狀結構之 class diagram 貝多芬 人類 屬性: 身高 體重 年齡 方法: 走路 跑步 事件: 被打 驚嚇 開心 = 165 = 80 = 45 音樂家 作曲 發表 National Taiwan University Department of Computer Science and Information Engineering 物件導向三大特性 同名異型 (Polymorphism) Overriding • 若繼承下來後,不滿意祖先定義的方法,子孫可以在繼承以後重新改寫,稱為 Overriding。 人類 屬性: 身高 體重 年齡 方法: 走路 跑步 事件: 被打 驚嚇 開心 音樂家 作曲 發表 人類 .走路 () { 約一分鐘三十步 } 音樂家 .走路 () { 約一分鐘十步 } 同樣是呼叫 “走路”, 宣告成人類與音樂家 就是不一樣。 National Taiwan University Department of Computer Science and Information Engineering 物件導向三大特性 同名異型 (Polymorphism) Overloading • 同一份函式,準備多種定義,以供各種場合呼叫,稱為Overloading。 人類 屬性: 身高 體重 年齡 方法: 走路 跑步 事件: 被打 驚嚇 開心 音樂家 作曲 作曲 (委託人 ) 音樂家 .作曲 (“王先生” ) 自動判斷 National Taiwan University Department of Computer Science and Information Engineering 封裝 (Encapsulation) 將資料(屬性)與方法(行為)封裝在一個物件裡頭,物件裡頭的資料與方法被緊緊的綁在一起,並擁有資訊隱藏( Information hiding)的特性。 Example: class Time { private int hour。 private int minute。 private int second。 public Time() { … } public void setTime(int hh,int mm,int ss) { … } public String toString() { … } } National Taiwan University Department of Computer Science and Information Engineering 繼承( Inheritance) 繼承概念圖 National Taiwan University Department of Computer Science and Information Engineering 繼承( Inheritance) 語法: class ClassName extends BaseClass 例如: class Line extends GraphicsObject Base Class( SuperClass):基底類別、 父類別 Derived Class( Subclass):衍生類別、 子類別 Java 理論上 不支援多重繼承 ,也就是說,一個子類別只能有一個父類別。 子類別將會繼承到父類別中所有可以存取的成員,包括:變數以及方法 注意:建構元( constructor)無法被繼承 Java 中每個物件的總祖先: Object 類別( ) National Taiwan University Department of Computer Science and Information Engineering 繼承( Inheritance) 可繼承成員 Superclass 中宣告為 public 或 protected 的成員。 如果 Subclass 與 Superclass 在同一個 package 中,會繼承未做任何存取控制宣告的成員。 不可繼承成員 如果 Subclass 與 Superclass 在不同 package, 所有未宣告有效範圍的成員全部不繼承。 (因為預設式 package access) Superclass 中宣告成 private 的成員 National Taiwan University Department of Computer Science and Information Engineering 繼承( Inheritance) Example: public class Dog { // 屬性 (Variables) private Str。managinginheritance
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。
用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。