第7章習題答案.pdf_第1頁
第7章習題答案.pdf_第2頁
第7章習題答案.pdf_第3頁
第7章習題答案.pdf_第4頁
第7章習題答案.pdf_第5頁
已閱讀5頁,還剩4頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

128 習題 1 類之間的關系除了聚合和關聯外 還有繼承 請用 UML 符號描述下述類之間的關 系 1 賬戶和存款帳戶 2 學生和人 3 水果和橙子 4 教師和課程 5 班級和學生 答 1 繼承關系 2 繼承關系 3 繼承關系 4 關聯關系 5 聚合關系 2 簡述 Object的意義 以及在判斷相等時 子類需要如何重寫超類的方法 答 Object 的類 它是所有 Java 類 JDK提供的 第三方類庫 用戶自定義的 的根類 一個類如果在聲明時沒有明確使用 extends 來標記自己派生于某個類 那么編譯器將自動將 Object 類作為該類的超類 因此 所有的類最終都來自 Object 按照繼承的特性 所有的 類都繼承了 Object 類中的所有方法 Object 提供了一個對象基本的行為定義 例如 兩個 對象的相同比較 equals 對象的字符串表示 toString 對象的復制 clone 等等 這 些沒有用 final修飾的方法其行為一般都需要在子類中重新定義 在判斷相等時 子類需要重寫 Object類中的 equals方法 定義自身判斷相等的原則 3 超類的構造方法是否可以被子類覆蓋 重寫 答 不會 子類并不繼承超類的構造方法作為自己的構造方法 因為構造方法用來構 造類的對象 子類和父類并非同一類型 因此子類不能直接繼承父類的構造方法 必須有 自己的構造方法 但是子類的構造方法并不會覆蓋超類的構造方法 雖然不能繼承超類的 構造方法 但子類可以通過 super 關鍵字來調用父類已定義的構造方法 4 試述 super的作用和使用規(guī)則 答 1 顯式的調用父類的方法當從一個類繼承時 子類和父類都有一個同名方法 也就 是子類覆蓋了父類的方法 可是又想調用父類的方法 那么就要用 super 2 在構造方法中 與 this用法類似 利用 super可以調用父類的構造方法 5 什么是多態(tài) 簡述 Java 中多態(tài)的實現機制 答 多態(tài)性是面向對象的核心特征之一 類的多態(tài)性提供類中成員設計的靈活性和方法 執(zhí)行的多樣性 在 JAVA中多態(tài)性表現如下 1 方法重載 重載表現為同一個類中方法的多態(tài)性 一個類生命多個重載方法就是為一種功能提供多 種實現 編譯時 根據方法實際參數的數據類型 個數和次序 決定究竟應該執(zhí)行重載方法中的 哪一個 2 子類重定義從父類繼承來的成員 當子類從父類繼承來的成員不適合子類時 子類不能刪除它們 但可以重定義它們 子 類重定義父類成員 同名成員在父類與子類之間表現出多態(tài)性 父類對象引用父類成員 129 子類對象引用子類成員 不會產生沖突和混亂 子類可重定義父類的同名成員變量 稱子類隱藏父類成員變量 子類也可以重定義父類 的同名成員方法 當子類方法的參數列表與父類方法參數列表完全相同時 稱為子類方法 覆蓋 override 父類方法 覆蓋父類方法時 子類方法的訪問權限不能小于父類方法的權 限 從編譯運行的角度 在 JAVA中多態(tài)有兩種形式 1 編譯時多態(tài)性 對于多個同名方法 如果在編譯時能夠確定執(zhí)行同名方法中的哪一個 則稱為編譯時多 態(tài)性 2 運行時多態(tài)性 如果在編譯時不能確定 只能在運行時才能確定執(zhí)行多個同名方法中的哪一個 則稱 為運行時多態(tài)性 6 簡述繼承和實現接口的區(qū)別 答 簡單來看 抽象類和接口都可以允許定義子類必須實現的方法 但實際上兩者在 語義和用途上有著很大的差別 從語法規(guī)定來看它們的區(qū)別很明顯 Java 支持一個類只能繼承一個超類 但支持一個 類實現多個接口 一個接口可以繼承多個接口 另外 接口中的方法僅是抽象方法的聲 明 而抽象類中可以包含方法的具體實現 最重要的 抽象類本身是一類型系統中的超類 而接口僅是抽象方法的集合 因此抽 象類更多的用在描述問題的類的層次結構中 而接口更多的用在描述系統 或組件 所提供 的公共服務中 7 假定銀行的一個存取款系統有兩類客戶 一類是現金用戶 一類是信用卡用戶 每種 客戶都可以實現存 取 和查詢余額和交易歷史 信用卡用戶還可以查詢透支情況和信 用情況 要求 對于現金用戶 每次取款操作只能在賬戶實際額度內操作 而信用卡用 戶則根據其信用級別有一定的透支限額 請根據你的理解 運用所學的抽象 接口 繼承等面向對象的概念建立模型 abstract class Account String name String aid double balance public Account String name String aid double balance 請把構造函數補充完整 this name name this aid aid this balance balance public void deposit double amount 請把存款方法補充完整 this balance amount public abstract void withdraw double amount 130 public double getBalance 請把查詢余額方法補充完整 return balance public String toString return name aid balance class CashAccount extends Account String type 工資卡 借記卡 理財卡 public CashAccount String name String aid double balance String type super name aid balance this type type Override public void withdraw double amount TODO Auto generated method stub if balance 0 沒透支 System out println name 沒透支 你取了 amount balance amount else 透支 temp temp if temp 300 打印語句 停車 QQ當 maxSpeed 120 打印語句 停車 abstract class Car int maxSpeed public Car int maxSpeed this maxSpeed maxSpeed public abstract void stop class Ford extends Car public Ford int maxSpeed super maxSpeed TODO Auto generated constructor stub Override public void stop TODO Auto generated method stub if maxSpeed 300 System out println 停車 class QQ extends Car public QQ int maxSpeed super maxSpeed Override public void stop if maxSpeed 120 System out println 停車 11 下面程序運行后的輸出是什么 class ThisClass public static void main String args Object o Object new ThisClass Object s new Object if o equals s System out println true 答 沒有任何輸出 因為 o equals s 的結果為 false 這是兩個不同的對象 12 指出下面程序運行后的結果 class C1 static int j 0 public void method int a j class Test extends C1 public int method return j public void result 134 method j System out println j method public static void main String args new Test result 答 結果是 2 13 下面程序編譯運行的結果是什么 interface Action int i 10 class Happy implements Action public static void main String args Happy h new Happy int j j Action i j Happy i j h i 答 j的值為 10 14 在 java util 包中有一接口 Comparator 提供了比較器的功能 請根據此接口定義的比 較方法 針對 Account 中的 id 和余額兩個字段 完成兩個比較器類的定義 并改寫程 序 7 4 驗證你的設計是否正確 一個實現了Comparable接口的Account類 按ID進行比較 import java util Arrays public class Account2 implements Comparable private String id 賬戶id 唯一性的標識 private String name 賬戶擁有人的姓名 private int balance 余額 public Account2 String id String name int balance this id id this name name this balance balance 取款的方法 返回本次取出的金額 如果為0 表示余額不足 public int withdraw int amount int result 0 if this balance amount this balance this balance amount result amount return result public int getBalance return this balance public void setBalance int balance this balance balance 135 public String getId return id toString方法覆蓋了來自根類Object的方法 Override public String toString return Account id id name name balance balance compareTo方法覆蓋了來自接口的方法 Override public int compareTo Object o int result 0 這里忽略了o的類型不是Account的情況 Account2 t Account2 o 利用字符串對象自身的compareTo 方法作為賬戶大小的比較 return pareTo t getId public static void main String args Account2 accounts new Account2 5 accounts 0 new Account2 001 王峰 1000 accounts 1 new Account2 002 張靜 1500 accounts 2 new Account2 004 翟宇 660 accounts 3 new Account2 003 魯寧 800 accounts 4 new Account2 005 劉新 1700 Arrays sort accounts for int i 0 i amount this balance this balance amount result amount return result public int getBalance return this balance 136 public void setBalance int balance this balance balance public String getId return id toString方法覆蓋了來自根類Object的方法 Override public String toString return Account id id name name balance balance compareTo方法覆蓋了來自接口的方法 Override public int compareTo Object o int result 0 這里忽略了o的類型不是Account的情況 Account3 t Account3 o 利用字符串對象自身的compareTo 方法作為賬戶大小的比較 return this balance t getBalance public static void main String args Account3 acc

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論