版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、.第八章類和對象的擴展【實驗目的】(1) 類的繼承a. 掌握父類及子類的關系及創(chuàng)建方法b. 掌握上轉型對象的使用方法c. 掌握子類對象創(chuàng)建過程中與父類構造方法的關系,及super關鍵字的用法(2) 多態(tài)與接口a. 掌握抽象類與抽象方法的概念b. 掌握多態(tài)的實現原理及方法c. 了解成員變量的隱藏d. 掌握接口的設計方法【實驗范例】例1:(繼承)(1)編寫一個圓類Circle,該類擁有:一個成員變量Radius(私有,浮點型);/ 存放圓的半徑;兩個構造方法Circle( ) / 將半徑設為0 Circle(double r )/創(chuàng)建Circle對象時將半徑初始化為r 三個成員方法double g
2、etArea( ) /獲取圓的面積double getPerimeter( ) /獲取圓的周長void show( ) /將圓的半徑、周長、面積輸出到屏幕(2)編寫一個圓柱體類Cylinder,它繼承于上面的Circle類。還擁有:一個成員變量double hight(私有,浮點型);/ 圓柱體的高;構造方法Cylinder (double r, double h ) /創(chuàng)建Circle對象時將半徑初始化為r 成員方法double getVolume( ) /獲取圓柱體的體積void showVolume( ) /將圓柱體的體積輸出到屏幕編寫應用程序,創(chuàng)建類的對象,分別設置圓的半徑、圓柱體的高
3、,計算并分別顯示圓半徑、圓面積、圓周長,圓柱體的體積。程序代碼:class Circle / 定義父類-園類private double radius; / 成員變量-園半徑Circle() / 構造方法radius = 0.0;Circle(double r) / 構造方法radius = r;double getPerimeter() / 成員方法-求園周長return 2 * Math.PI * radius;double getArea() / 成員方法-求園面積return Math.PI * radius * radius;void disp() / 成員方法-顯示園半徑、周長、面
4、積System.out.println(圓半徑= + radius);System.out.println(圓周長= + getPerimeter();System.out.println(圓面積= + getArea();class Cylinder extends Circle / 定義子類-圓柱類private double hight; / 成員變量-園柱高Cylinder(double r, double h) / 構造方法super(r);hight = h;public double getVol() / 成員方法-求園柱體積return getArea() * hight;pu
5、blic void dispVol() / 成員方法-顯示園柱體積System.out.println(圓柱體積= + getVol();public class Prog1 / 定義主類public static void main(String args) / 主程入口Circle Ci = new Circle(10.0); / 生成園類實例Ci.disp(); / 調用園類的方法Cylinder Cyl = new Cylinder(5.0, 10.0); / 生成圓柱類實例Cyl.disp(); / 調用父類方法Cyl.dispVol(); / 調用子類方法例2:(重載)設計一個汽車
6、類Multiplication,在其中定義三個同名的mul方法:第一個方法是計算兩個整數的積;第二個方法是計算兩個浮點數的積;第三個方法是計算三個浮點數的積。程序代碼:class Multiplication public void mul(int a, int b) int m = a * b;System.out.println(a + * + b + = + m);public void mul(double a, double b) float m = (float) (a * b);System.out.println(a + * + b + = + m);public void m
7、ul(double a, double b, double c) double m = a * b * c;System.out.println(a + * + b + * + c + = + m);public class Prog1 public static void main(String args) Multiplication test = new Multiplication();test.mul(3, 4);test.mul(2.3, 3);test.mul(3, 4, 5);例3:(接口與多態(tài))(1) 定義一個接口CanFly,描述會飛的方法public void fly()
8、;(2) 分別定義類飛機和鳥,實現CanFly接口。(3) 定義一個測試類,測試飛機和鳥。測試類中定義一個makeFly()方法,讓會飛的事物飛起來。(4) 然后在main方法中創(chuàng)建飛機對象和鳥對象,并在main方法中調用makeFly()方法,讓飛機和鳥起飛。程序代碼:interface CanFly public void fly();class AirPlane implements CanFly public void fly() System.out.println(airplane is flying);class Bird implements CanFly public voi
9、d fly() System.out.println(Bird is flying);class Prog1 static void makeFly(CanFly obj) obj.fly();public static void main(String args) AirPlane ap = new AirPlane();Bird b = new Bird();makeFly(ap);makeFly(b);【綜合例子】例:在第七章綜合例子的基礎上,編寫一個VIP賬號的管理要求:1、VIPAccount繼承Account2、VIP設置3個等級:VIP0:一般賬戶,不能透支VIP1:透支上限30
10、00元VIP2:透支上限10000元1、 根據透支情況,重寫withdraw()方法(重寫)2、 兩個構造函數,一個與父類Account構造函數的參數相同,另外一個參數增加設置對象的VIP等級(重載)實現簡單的循環(huán)菜單顯示,并實現存|取款、修改密碼、顯示賬戶余額等功能(實現的功能和第七章的綜合例子相同)import java.util.Scanner;class Account int custID;String custName;int custPWD;double custMoney;Account(int id, String name, int PWD, double money) c
11、ustID = id;custName = name;custPWD = PWD;custMoney = money;void displayAccout() System.out.println(賬號: + custID);System.out.println(戶名: + custName);System.out.println(余額: + custMoney);boolean deposit(double money)custMoney += money;return true;boolean withdraw(double money)if (custMoneymoney) return
12、 false;elsecustMoney -= money;return true;void changePWD(int PWD)custPWD = PWD;class VIPAccount extends Accountint VIPLevel;/VIP特權,透支金額分3個等級為VIP0:一般客戶,不能透支,VIP1:3000,VIP2:10000VIPAccount (int id, String name, int PWD, double money) /構造函數重載super(id,name,PWD,money);VIPAccount (int id, String name, int
13、 PWD, double money, int level) /構造函數重載super(id,name,PWD,money);VIPLevel = level;void setVIPLevel(int level) VIPLevel = level;boolean withdraw(double money) /函數重寫double remain = custMoney - money;switch (VIPLevel)case 0:if (remain 0) System.out.println(您不是VIP客戶,不能透支!您目前的余額為: + custMoney);return false
14、; else custMoney -= money;System.out.println(取款成功,您目前的余額為: + custMoney);return true;case 1:if (remain -3000) System.out.println(您的VIP等級為1,透支額度不能抽過3000元,您目前的余額為: + custMoney);return false; else custMoney -= money;System.out.println(取款成功,您目前的余額為: + custMoney);return true;case 2:if (remain -10000) Syst
15、em.out.println(您的VIP等級為2,透支額度不能抽過10000元,您目前的余額為: + custMoney);return false; else custMoney -= money;System.out.println(取款成功,您目前的余額為: + custMoney);return true;return true;public class CustDemo public static void main(String args) VIPAccount cust = new VIPAccount4;cust0 = new VIPAccount(1001, Tom, 111
16、, 400.0f, 0);cust1 = new VIPAccount(1002, Mike, 222, 500.0f, 1);cust2 = new VIPAccount(1003, Bob, 333, 600.0f, 2);cust3 = new VIPAccount(1004, Cindy, 444, 100.0f, 1);int ind = 0;double money;System.out.println(請輸入賬號:);Scanner sc = new Scanner(System.in);long id = sc.nextLong();for (int i=0; i4; i+)i
17、f (custi.custID = id) ind=i;while (true) System.out.println(n1.存款);System.out.println(2.取款);System.out.println(3.修改密碼);System.out.println(4.查詢);System.out.println(5.退出);sc = new Scanner(System.in);switch(sc.nextInt() case 1:System.out.println(請輸入存款金額:);money = sc.nextDouble();custind.deposit(money);
18、custind.displayAccout();break;case 2:System.out.println(請輸入取款金額:);money = sc.nextDouble();if (custind.withdraw(money) custind.displayAccout();else System.out.println(您的賬號余額不足!);break;case 3:System.out.println(請輸入新密碼:); custind.custPWD = sc.nextInt();break;case 4:custind.displayAccout(); break;case 5
19、:System.out.println(歡迎使用xxx銀行系統(tǒng)!); System.exit(1);【練習題目】8-1 (繼承與多態(tài))有哺乳動物類mammal,將其作為父類,從其派生出子類貓cat和子類狗dog,基類中有方法speak()。8-2 (重載)編寫一個Java應用程序,從鍵盤讀取用戶輸入兩個字符串,并重載3個strAdd函數分別實現這兩個字符串的拼接、整數相加和浮點數相加。要進行異常處理,對輸入的不符合要求的字符串提示給用戶,不能使程序崩潰。(異常處理)8-3 (接口)1.利用接口繼承完成對生物、動物、人三個接口的定義。其中生物接口定義呼吸抽象方法;2.動物接口除具備生物接口特征之外,還定義了吃飯和睡覺兩個抽象方法;3.人接口除具備動物接口特征外,還定義了思維和學習兩個抽象方法。4.定義一個學生類實現上述人接口。8-4 (繼承、接口)實現一個名為Person的類和它的子類Employee,Manager是Employee的子類,設計一個接口Wage,用于漲工資,普通員工一次能漲10,經理能漲20。具體要求如下:(1)接口Wage包含addWage方法,創(chuàng)建類WageImpl用于實現接口Wage(2)Person類中的屬性有
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025-2030年中國戶外運動光學產品行業(yè)并購重組擴張戰(zhàn)略制定與實施研究報告
- 2025-2030年中國智能卡芯片行業(yè)全國市場開拓戰(zhàn)略制定與實施研究報告
- 新形勢下風機塔架行業(yè)可持續(xù)發(fā)展戰(zhàn)略制定與實施研究報告
- 2025-2030年中國產業(yè)園區(qū)物業(yè)管理行業(yè)營銷創(chuàng)新戰(zhàn)略制定與實施研究報告
- 建設書香校園活動方案
- 校園西裝調查問卷
- 建設功臣事跡材料
- 2025年教育學試題答案
- 食品保鮮膜知識培訓課件
- 西藏林芝市2023-2024學年九年級上學期期末考試化學試題
- 專項債券培訓課件
- CNAS-CL01-G001:2024檢測和校準實驗室能力認可準則的應用要求
- 校園重點防火部位消防安全管理規(guī)定(3篇)
- 臨時施工圍擋安全應急預案
- ICP-網絡與信息安全保障措施-1.信息安全管理組織機構設置及工作職責
- 碼頭安全生產管理制度
- 2024城市河湖底泥污染狀況調查評價技術導則
- MT-T 1199-2023 煤礦用防爆柴油機無軌膠輪運輸車輛通用安全技術條件
- C4支持學生創(chuàng)造性學習與表達作業(yè)1-設計方案
- Q∕SY 01330-2020 井下作業(yè)現場監(jiān)督規(guī)范
- 醫(yī)院關于不合理醫(yī)療檢查專項治理自查自查自糾總結
評論
0/150
提交評論