Java基礎(chǔ)篇_有關(guān)接口和抽象類的幾道練習(xí)題(分享)
呃,一定要理解之后自己敲!?。∵@幾道題,使我進(jìn)一步了解了接口和抽象類。
1.設(shè)計一個商品類 字段:
商品名稱,重量,價格,配件數(shù)量,配件制造廠商(是數(shù)組,因為可能有多個制造廠商)
要求: 有構(gòu)造函數(shù)
重寫 toString 方法
重寫 equals方法,進(jìn)行兩件商品的比較
package TT; import java.util.Arrays; public class G { private int 重量; private String 商品名稱; private int 價格; private int 配件數(shù)量; private String[] 配件制造廠商列表; public G(int 重量, String 商品名稱, int 價格, int 配件數(shù)量, String[] 配件制造廠商列表) { super(); this.重量 = 重量; this.商品名稱 = 商品名稱; this.價格 = 價格; this.配件數(shù)量 = 配件數(shù)量; this.配件制造廠商列表 = 配件制造廠商列表; } @Override public String toString() { return "G [重量=" + 重量 + ", 商品名稱=" + 商品名稱 + ", 價格=" + 價格 + ", 配件數(shù)量=" + 配件數(shù)量 + ", 配件制造廠商列表=" + Arrays.toString(配件制造廠商列表) + "]"; } public boolean equals(Object obj) { if (this == obj) { return true; } if (obj instanceof G) { G goods = (G) obj; if (this.重量 == goods.重量 && this.價格 == goods.價格 && this.商品名稱.equals(goods.商品名稱) && this.配件數(shù)量 == goods.配件數(shù)量) { for (int i = 0; i < this.配件制造廠商列表.length; i++) { if (this.配件制造廠商列表[i] != goods.配件制造廠商列表[i]) { return false; } } return true; } else { return false; } } else { return false; } } //將測試類和上面的放一塊兒了 public static void main(String[] args) { String[] 廠商列表1 = { "微軟", "索尼", "三星" }; String[] 廠商列表2 = { "微軟", "索尼", "三星" }; G g1 = new G(40, "電腦", 4000, 30, 廠商列表1); G g2 = new G(40, "顯示器", 4000, 30, 廠商列表2); System.out.println(g1); System.out.println(g2); System.out.println(g1.equals(g2)); } }
2.設(shè)計一個抽象類,并演示它的使用 (三級)
package TT; //抽象類 abstract class 數(shù)學(xué)老師標(biāo)準(zhǔn){ abstract void 講數(shù)學(xué)(); abstract int add(int a,int b); } //第二級抽象類 abstract class 普通數(shù)學(xué)老師標(biāo)準(zhǔn) extends 數(shù)學(xué)老師標(biāo)準(zhǔn){ void 講數(shù)學(xué)(){ System.out.println("我能講數(shù)學(xué)"); } } //第三級抽象類 class 真正的數(shù)學(xué)老師 extends 普通數(shù)學(xué)老師標(biāo)準(zhǔn){ //注意這里能不能用abstract修飾,修飾了以后會對上下的影響 //可以重寫,也可以不重寫 void 講數(shù)學(xué)(){ System.out.println("我能講高數(shù)"); } int add(int a,int b){ return a+b; } } class Test{ public static void main(String[] args) { 數(shù)學(xué)老師標(biāo)準(zhǔn) t1=new 真正的數(shù)學(xué)老師(); int result=t1.add(44, 4444); System.out.println("計算結(jié)果是:"+result); t1.講數(shù)學(xué)(); } }
3.設(shè)計一個接口, 并設(shè)計一個實現(xiàn)類,實現(xiàn)這個接口
package TT; interface 銀行標(biāo)準(zhǔn){ int MONEY=9900000; void 取錢(); void 存錢(); } class 工商銀行 implements 銀行標(biāo)準(zhǔn){ public void 取錢(){ System.out.println("錢進(jìn)銀行了"); } @Override//全部方法都拿來 public void 存錢() { System.out.println("錢出去了"); } } public class Test { public static void main(String[]args){ 銀行標(biāo)準(zhǔn) bank=new 工商銀行(); bank.取錢(); bank.存錢(); System.out.println("銀行的老底是"+銀行標(biāo)準(zhǔn).MONEY);//此處銀行標(biāo)準(zhǔn)用bank會報錯,The static field 銀行標(biāo)準(zhǔn).MONEY should be accessed in a static way } }
4.設(shè)計一個類,可以同時實現(xiàn)多個接口
package TT; interface 建筑標(biāo)準(zhǔn) { void kaimen(); void guanmen(); } interface 銀行標(biāo)準(zhǔn) { int MONEY = 9999; void 取錢(); void 存錢(); } class 工商銀行 implements 銀行標(biāo)準(zhǔn),建筑標(biāo)準(zhǔn) { @Override public void kaimen() { System.out.println("我能開門"); } @Override public void guanmen() { // TODO Auto-generated method stub System.out.println("我能關(guān)門"); } @Override public void 取錢() { // TODO Auto-generated method stub System.out.println("我能取錢"); } @Override public void 存錢() { // TODO Auto-generated method stub System.out.println("我能存錢"); } } public class Test2 { public static void main(String[] args) { 工商銀行 bank = new 工商銀行(); bank.取錢(); bank.存錢(); System.out.println("銀行的底是" + 工商銀行.MONEY); bank.kaimen(); bank.guanmen(); } }
5.設(shè)計一個類,在繼承一個類的同時,實現(xiàn)其的兩個接口(具體是什么接口自行設(shè)計)
package TT; interface 建筑標(biāo)準(zhǔn){ void kaimen(); void guamen(); } interface 銀行標(biāo)準(zhǔn) { int MONEY=900000; //接口中的變量,全相當(dāng)于public static final 類型的 void 取錢(); void 存錢(); } class 金融機(jī)構(gòu){ void 貨幣流通(){ System.out.println("貨幣流通"); } } class 工商銀行 extends 金融機(jī)構(gòu) implements 銀行標(biāo)準(zhǔn), 建筑標(biāo)準(zhǔn) { public void 取錢() { System.out.println("錢進(jìn)了銀行"); } public void 存錢() { System.out.println("錢從銀行進(jìn)行個人手里"); } @Override public void kaimen() { System.out.println("銀行有個大門,能打開"); } @Override public void guamen() { System.out.println("銀行有個鐵門,關(guān)了以后誰都進(jìn)不來了"); } } class Test4{ public static void main(String[] args) { 工商銀行 bank=new 工商銀行(); bank.取錢() ; bank.存錢() ; System.out.println("銀行的底是"+bank.MONEY); bank.kaimen(); bank.guamen(); bank.貨幣流通(); } }
最后的彩蛋彩蛋彩蛋?。。。?/p>
由于我在練習(xí)的時候?qū)⑦@幾個例題放在了同一個TT包下,一共有5個文件。最后的最后,上面的后三個例子開始報錯(比如報錯:The type 銀行標(biāo)準(zhǔn) is already defined)。
啊啊啊啊,調(diào)試半個小時,都沒弄好。后來靜一下想,既然Eclipse提示XXX已經(jīng)定義了,是不是只要在同一個包下,無論你建立多少個類,里面都不能重復(fù)定義相同類名文件呢?之后就開始Delete兩個),果然,成功啦。仔細(xì)一想,既然同一個包下,公共類之間可以訪問,這種排同性就是驗證啊,也可以省下很多資源。
以上這篇Java基礎(chǔ)篇_有關(guān)接口和抽象類的幾道練習(xí)題(分享)就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Java如何使用Set接口存儲沒有重復(fù)元素的數(shù)組
Set是一個繼承于Collection的接口,即Set也是集合中的一種。Set是沒有重復(fù)元素的集合,本篇我們就用它存儲一個沒有重復(fù)元素的數(shù)組2022-04-04透過Spring源碼查看Bean的命名轉(zhuǎn)換規(guī)則圖文詳解
Java Bean是一種 Java 編程語言編寫的可重用軟件組件,包括符合一定規(guī)范的Java 類、屬性和方法,用于描述和處理應(yīng)用程序中的數(shù)據(jù)對象,下面這篇文章主要給大家介紹了關(guān)于透過Spring源碼查看Bean的命名轉(zhuǎn)換規(guī)則的相關(guān)資料,需要的朋友可以參考下2023-06-06java中以DES的方式實現(xiàn)對稱加密并提供密鑰的實例
這篇文章主要介紹了java中以DES的方式實現(xiàn)對稱加密并提供密鑰的實例的相關(guān)資料,這里提供實例幫助大家學(xué)習(xí)理解這部分知識,需要的朋友可以參考下2017-08-08MyBatis-Plus使用sl4j日志打印SQL的代碼詳解
以下是關(guān)于使用 Spring Boot 起始器替換 slf4j-api 和 logback 依賴的詳細(xì)步驟和注意事項,包括 MyBatis-Plus 的默認(rèn)日志級別信息,需要的朋友可以參考下2024-10-10java結(jié)合email實現(xiàn)自動推送功能
這篇文章主要介紹了java結(jié)合email實現(xiàn)自動推送功能,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-03-03