JAVA實(shí)驗(yàn)_題目_第1頁
JAVA實(shí)驗(yàn)_題目_第2頁
JAVA實(shí)驗(yàn)_題目_第3頁
JAVA實(shí)驗(yàn)_題目_第4頁
JAVA實(shí)驗(yàn)_題目_第5頁
已閱讀5頁,還剩4頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、.第八章類和對(duì)象的擴(kuò)展【實(shí)驗(yàn)?zāi)康摹?1) 類的繼承a. 掌握父類及子類的關(guān)系及創(chuàng)建方法b. 掌握上轉(zhuǎn)型對(duì)象的使用方法c. 掌握子類對(duì)象創(chuàng)建過程中與父類構(gòu)造方法的關(guān)系,及super關(guān)鍵字的用法(2) 多態(tài)與接口a. 掌握抽象類與抽象方法的概念b. 掌握多態(tài)的實(shí)現(xiàn)原理及方法c. 了解成員變量的隱藏d. 掌握接口的設(shè)計(jì)方法【實(shí)驗(yàn)范例】例1:(繼承)(1)編寫一個(gè)圓類Circle,該類擁有:一個(gè)成員變量Radius(私有,浮點(diǎn)型);/ 存放圓的半徑;兩個(gè)構(gòu)造方法Circle( ) / 將半徑設(shè)為0 Circle(double r )/創(chuàng)建Circle對(duì)象時(shí)將半徑初始化為r 三個(gè)成員方法double g

2、etArea( ) /獲取圓的面積double getPerimeter( ) /獲取圓的周長(zhǎng)void show( ) /將圓的半徑、周長(zhǎng)、面積輸出到屏幕(2)編寫一個(gè)圓柱體類Cylinder,它繼承于上面的Circle類。還擁有:一個(gè)成員變量double hight(私有,浮點(diǎn)型);/ 圓柱體的高;構(gòu)造方法Cylinder (double r, double h ) /創(chuàng)建Circle對(duì)象時(shí)將半徑初始化為r 成員方法double getVolume( ) /獲取圓柱體的體積void showVolume( ) /將圓柱體的體積輸出到屏幕編寫應(yīng)用程序,創(chuàng)建類的對(duì)象,分別設(shè)置圓的半徑、圓柱體的高

3、,計(jì)算并分別顯示圓半徑、圓面積、圓周長(zhǎng),圓柱體的體積。程序代碼:class Circle / 定義父類-園類private double radius; / 成員變量-園半徑Circle() / 構(gòu)造方法radius = 0.0;Circle(double r) / 構(gòu)造方法radius = r;double getPerimeter() / 成員方法-求園周長(zhǎng)return 2 * Math.PI * radius;double getArea() / 成員方法-求園面積return Math.PI * radius * radius;void disp() / 成員方法-顯示園半徑、周長(zhǎng)、面

4、積System.out.println(圓半徑= + radius);System.out.println(圓周長(zhǎng)= + getPerimeter();System.out.println(圓面積= + getArea();class Cylinder extends Circle / 定義子類-圓柱類private double hight; / 成員變量-園柱高Cylinder(double r, double h) / 構(gòu)造方法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); / 生成園類實(shí)例Ci.disp(); / 調(diào)用園類的方法Cylinder Cyl = new Cylinder(5.0, 10.0); / 生成圓柱類實(shí)例Cyl.disp(); / 調(diào)用父類方法Cyl.dispVol(); / 調(diào)用子類方法例2:(重載)設(shè)計(jì)一個(gè)汽車

6、類Multiplication,在其中定義三個(gè)同名的mul方法:第一個(gè)方法是計(jì)算兩個(gè)整數(shù)的積;第二個(gè)方法是計(jì)算兩個(gè)浮點(diǎn)數(shù)的積;第三個(gè)方法是計(jì)算三個(gè)浮點(diǎn)數(shù)的積。程序代碼: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) 定義一個(gè)接口CanFly,描述會(huì)飛的方法public void fly()

8、;(2) 分別定義類飛機(jī)和鳥,實(shí)現(xiàn)CanFly接口。(3) 定義一個(gè)測(cè)試類,測(cè)試飛機(jī)和鳥。測(cè)試類中定義一個(gè)makeFly()方法,讓會(huì)飛的事物飛起來。(4) 然后在main方法中創(chuàng)建飛機(jī)對(duì)象和鳥對(duì)象,并在main方法中調(diào)用makeFly()方法,讓飛機(jī)和鳥起飛。程序代碼: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);【綜合例子】例:在第七章綜合例子的基礎(chǔ)上,編寫一個(gè)VIP賬號(hào)的管理要求:1、VIPAccount繼承Account2、VIP設(shè)置3個(gè)等級(jí):VIP0:一般賬戶,不能透支VIP1:透支上限30

10、00元VIP2:透支上限10000元1、 根據(jù)透支情況,重寫withdraw()方法(重寫)2、 兩個(gè)構(gòu)造函數(shù),一個(gè)與父類Account構(gòu)造函數(shù)的參數(shù)相同,另外一個(gè)參數(shù)增加設(shè)置對(duì)象的VIP等級(jí)(重載)實(shí)現(xiàn)簡(jiǎn)單的循環(huán)菜單顯示,并實(shí)現(xiàn)存|取款、修改密碼、顯示賬戶余額等功能(實(shí)現(xià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(賬號(hào): + 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特權(quán),透支金額分3個(gè)等級(jí)為VIP0:一般客戶,不能透支,VIP1:3000,VIP2:10000VIPAccount (int id, String name, int PWD, double money) /構(gòu)造函數(shù)重載super(id,name,PWD,money);VIPAccount (int id, String name, int

13、 PWD, double money, int level) /構(gòu)造函數(shù)重載super(id,name,PWD,money);VIPLevel = level;void setVIPLevel(int level) VIPLevel = level;boolean withdraw(double money) /函數(shù)重寫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等級(jí)為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等級(jí)為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(請(qǐng)輸入賬號(hào):);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(請(qǐng)輸入存款金額:);money = sc.nextDouble();custind.deposit(money);

18、custind.displayAccout();break;case 2:System.out.println(請(qǐng)輸入取款金額:);money = sc.nextDouble();if (custind.withdraw(money) custind.displayAccout();else System.out.println(您的賬號(hào)余額不足!);break;case 3:System.out.println(請(qǐng)輸入新密碼:); custind.custPWD = sc.nextInt();break;case 4:custind.displayAccout(); break;case 5

19、:System.out.println(歡迎使用xxx銀行系統(tǒng)!); System.exit(1);【練習(xí)題目】8-1 (繼承與多態(tài))有哺乳動(dòng)物類mammal,將其作為父類,從其派生出子類貓cat和子類狗dog,基類中有方法speak()。8-2 (重載)編寫一個(gè)Java應(yīng)用程序,從鍵盤讀取用戶輸入兩個(gè)字符串,并重載3個(gè)strAdd函數(shù)分別實(shí)現(xiàn)這兩個(gè)字符串的拼接、整數(shù)相加和浮點(diǎn)數(shù)相加。要進(jìn)行異常處理,對(duì)輸入的不符合要求的字符串提示給用戶,不能使程序崩潰。(異常處理)8-3 (接口)1.利用接口繼承完成對(duì)生物、動(dòng)物、人三個(gè)接口的定義。其中生物接口定義呼吸抽象方法;2.動(dòng)物接口除具備生物接口特征之外,還定義了吃飯和睡覺兩個(gè)抽象方法;3.人接口除具備動(dòng)物接口特征外,還定義了思維和學(xué)習(xí)兩個(gè)抽象方法。4.定義一個(gè)學(xué)生類實(shí)現(xiàn)上述人接口。8-4 (繼承、接口)實(shí)現(xiàn)一個(gè)名為Person的類和它的子類Employee,Manager是Employee的子類,設(shè)計(jì)一個(gè)接口Wage,用于漲工資,普通員工一次能漲10,經(jīng)理能漲20。具體要求如下:(1)接口Wage包含addWage方法,創(chuàng)建類WageImpl用于實(shí)現(xiàn)接口Wage(2)Person類中的屬性有

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論