Java基礎——關於介面和抽象類別的幾道練習題,java幾道

來源:互聯網
上載者:User

Java基礎——關於介面和抽象類別的幾道練習題,java幾道

呃,一定要理解之後自己敲!!!這幾道題,使我進一步瞭解了介面和抽象類別。

1.設計一個商品類 欄位:

商品名稱,重量,價格,配件數量,配件製造廠商(是數組,因為可能有多個製造廠商)

要求: 有建構函式

重寫 toString 方法

重寫 equals方法,進行兩件商品的比較

 1 package TT; 2  3 import java.util.Arrays; 4  5 public class G { 6     private int 重量; 7     private String 商品名稱; 8     private int 價格; 9     private int 配件數量;10     private String[] 配件製造廠商列表;11 12     public G(int 重量, String 商品名稱, int 價格, int 配件數量, String[] 配件製造廠商列表) {13         super();14         this.重量 = 重量;15         this.商品名稱 = 商品名稱;16         this.價格 = 價格;17         this.配件數量 = 配件數量;18         this.配件製造廠商列表 = 配件製造廠商列表;19     }20 21     @Override22     public String toString() {23         return "G [重量=" + 重量 + ", 商品名稱=" + 商品名稱 + ", 價格=" + 價格 + ", 配件數量="24                 + 配件數量 + ", 配件製造廠商列表=" + Arrays.toString(配件製造廠商列表) + "]";25     }26 27     public boolean equals(Object obj) {28         if (this == obj) {29             return true;30         }31 32         if (obj instanceof G) {33             G goods = (G) obj;34 35             if (this.重量 == goods.重量 && this.價格 == goods.價格36                     && this.商品名稱.equals(goods.商品名稱) && this.配件數量 == goods.配件數量) {37                 for (int i = 0; i < this.配件製造廠商列表.length; i++) {38                     if (this.配件製造廠商列表[i] != goods.配件製造廠商列表[i]) {39                         return false;40                     }41                 }42                 return true;43             } else {44                 return false;45             }46         } else {47             return false;48         }49     }50     //將測試類別和上面的放一塊兒了51     public static void main(String[] args) {52 53         String[] 廠商列表1 = { "微軟", "索尼", "三星" };54         String[] 廠商列表2 = { "微軟", "索尼", "三星" };55         G g1 = new G(40, "電腦", 4000, 30, 廠商列表1);56         G g2 = new G(40, "顯示器", 4000, 30, 廠商列表2);57 58         System.out.println(g1);59         System.out.println(g2);60 61         System.out.println(g1.equals(g2));62     }63 }

2.設計一個抽象類別,並示範它的使用 (三級)

 1 package TT; 2  3  //抽象類別 4 abstract class 數學老師標準{ 5 abstract void 講數學(); 6 abstract int add(int a,int b); 7 } 8   9  //第二級抽象類別10 abstract class 普通數學老師標準  extends 數學老師標準{11 void 講數學(){12 System.out.println("我能講數學");13 }14 }15 16 //第三級抽象類別17 class 真正的數學老師 extends 普通數學老師標準{  //注意這裡能不能用abstract修飾,修飾了以後會對上下的影響18 //可以重寫,也可以不重寫19 void 講數學(){20 System.out.println("我能講高數");21 }22 int add(int a,int b){23 return a+b;24 }25 }26 class Test{27     public static void main(String[] args) {28         數學老師標準 t1=new  真正的數學老師();29         int result=t1.add(44, 4444); 30         System.out.println("計算結果是:"+result);31         t1.講數學();32     }33 }

3.設計一個介面, 並設計一個實作類別,實現這個介面

 1 package TT; 2  3 interface 銀行標準{ 4     int MONEY=9900000; 5     void 取錢(); 6     void 存錢(); 7 } 8  9 class 工商銀行 implements 銀行標準{10     public void 取錢(){11         System.out.println("錢進銀行了");12         }13 14     @Override//全部方法都拿來15     public void 存錢() {16         System.out.println("錢出去了");17         }18     }19 public class Test {20     public static void main(String[]args){21          銀行標準  bank=new 工商銀行();22          bank.取錢();23          bank.存錢();24          25          System.out.println("銀行的老底是"+銀行標準.MONEY);//此處銀行標準用bank會報錯,The static field 銀行標準.MONEY should be accessed in a static way26         27     }28 29 }

4.設計一個類,可以同時實現多個介面

 1 package TT; 2  3 interface 建築標準 { 4     void kaimen(); 5  6     void guanmen(); 7 } 8  9 interface 銀行標準 {10     int MONEY = 9999;11 12     void 取錢();13 14     void 存錢();15 }16 17 class 工商銀行 implements 銀行標準,建築標準 {18     19     @Override20     public void kaimen() {21         System.out.println("我能開門");22 23     }24 25     @Override26     public void guanmen() {27         // TODO Auto-generated method stub28         System.out.println("我能關門");29 30     }31 32     @Override33     public void 取錢() {34         // TODO Auto-generated method stub35         System.out.println("我能取錢");36     }37 38     @Override39     public void 存錢() {40         // TODO Auto-generated method stub41         System.out.println("我能存錢");42 43     }44 45 }46 47 public class Test2 {48     public static void main(String[] args) {49         工商銀行 bank = new 工商銀行();50         bank.取錢();51         bank.存錢();52         System.out.println("銀行的底是" + 工商銀行.MONEY);53 54         bank.kaimen();55         bank.guanmen();56     }57 }

5.設計一個類,在繼承一個類的同時,實現其的兩個介面(具體是什麼介面自行設計)

 1 package TT; 2 interface 建築標準{ 3     void kaimen(); 4     void guamen(); 5 } 6 interface 銀行標準 7 { 8     int MONEY=900000;  //介面中的變數,全相當於public static final 類型的 9     void 取錢();10     void 存錢();11 }12 13 14 class 金融機構{15     void 貨幣流通(){16         System.out.println("貨幣流通");17     }18 }19 class 工商銀行 extends  金融機構  implements 銀行標準, 建築標準 {20 21     public void 取錢() {22         System.out.println("錢進了銀行");23     }24 25 26     public void 存錢() {27         System.out.println("錢從銀行進行個人手裡");    28     }29 30 31     @Override32     public void kaimen() {33         System.out.println("銀行有個大門,能開啟");34         35     }36 37 38     @Override39     public void guamen() {40         System.out.println("銀行有個鐵門,關了以後誰都進不來了");41         42     }43 44 }45 46 class Test4{47     public static void main(String[] args) {48         工商銀行  bank=new 工商銀行(); 49         bank.取錢() ;50         bank.存錢() ;51         System.out.println("銀行的底是"+bank.MONEY);52         53         bank.kaimen(); 54         bank.guamen();55 56         bank.貨幣流通();57     58     }59 }

最後的彩蛋彩蛋彩蛋!!!!

由於我在練習的時候將這幾個例題放在了同一個TT包下,一共有5個檔案。最後的最後,上面的後三個例子開始報錯(比如報錯:The type 銀行標準 is already defined)。

啊啊啊啊,調試半個小時,都沒弄好。後來靜一下想,既然Eclipse提示XXX已經定義了,是不是只要在同一個包下,無論你建立多少個類,裡面都不能重複定義相同類名檔案呢?之後就開始Delete兩個),果然,成功啦。仔細一想,既然同一個包下,公用類之間可以訪問,這種排同性就是驗證啊,也可以省下很多資源。

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.