呃,一定要理解之后自己敲!!!這幾道題,使我進一步了解了接口和抽象類。
1.設計一個商品類 字段:
商品名稱,重量,價格,配件數量,配件制造廠商(是數組,因為可能有多個制造廠商)
要求: 有構造函數
重寫 toString 方法
重寫 equals方法,進行兩件商品的比較
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
|
package TT; import java.util.Arrays; public class G { private int 重量; private String 商品名稱; private int 價格; private int 配件數量; private String[] 配件制造廠商列表; public G( int 重量, String 商品名稱, int 價格, int 配件數量, String[] 配件制造廠商列表) { super (); this .重量 = 重量; this .商品名稱 = 商品名稱; this .價格 = 價格; this .配件數量 = 配件數量; this .配件制造廠商列表 = 配件制造廠商列表; } @Override public String toString() { return "G [重量=" + 重量 + ", 商品名稱=" + 商品名稱 + ", 價格=" + 價格 + ", 配件數量=" + 配件數量 + ", 配件制造廠商列表=" + 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 .配件數量 == goods.配件數量) { 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.設計一個抽象類,并演示它的使用 (三級)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
package TT; //抽象類 abstract class 數學老師標準{ abstract void 講數學(); abstract int add( int a, int b); } //第二級抽象類 abstract class 普通數學老師標準 extends 數學老師標準{ void 講數學(){ System.out.println( "我能講數學" ); } } //第三級抽象類 class 真正的數學老師 extends 普通數學老師標準{ //注意這里能不能用abstract修飾,修飾了以后會對上下的影響 //可以重寫,也可以不重寫 void 講數學(){ System.out.println( "我能講高數" ); } int add( int a, int b){ return a+b; } } class Test{ public static void main(String[] args) { 數學老師標準 t1= new 真正的數學老師(); int result=t1.add( 44 , 4444 ); System.out.println( "計算結果是:" +result); t1.講數學(); } } |
3.設計一個接口, 并設計一個實現類,實現這個接口
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
package TT; interface 銀行標準{ int MONEY= 9900000 ; void 取錢(); void 存錢(); } class 工商銀行 implements 銀行標準{ public void 取錢(){ System.out.println( "錢進銀行了" ); } @Override //全部方法都拿來 public void 存錢() { System.out.println( "錢出去了" ); } } public class Test { public static void main(String[]args){ 銀行標準 bank= new 工商銀行(); bank.取錢(); bank.存錢(); System.out.println( "銀行的老底是" +銀行標準.MONEY); //此處銀行標準用bank會報錯,The static field 銀行標準.MONEY should be accessed in a static way } } |
4.設計一個類,可以同時實現多個接口
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
|
package TT; interface 建筑標準 { void kaimen(); void guanmen(); } interface 銀行標準 { int MONEY = 9999 ; void 取錢(); void 存錢(); } class 工商銀行 implements 銀行標準,建筑標準 { @Override public void kaimen() { System.out.println( "我能開門" ); } @Override public void guanmen() { // TODO Auto-generated method stub System.out.println( "我能關門" ); } @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.設計一個類,在繼承一個類的同時,實現其的兩個接口(具體是什么接口自行設計)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
|
package TT; interface 建筑標準{ void kaimen(); void guamen(); } interface 銀行標準 { int MONEY= 900000 ; //接口中的變量,全相當于public static final 類型的 void 取錢(); void 存錢(); } class 金融機構{ void 貨幣流通(){ System.out.println( "貨幣流通" ); } } class 工商銀行 extends 金融機構 implements 銀行標準, 建筑標準 { public void 取錢() { System.out.println( "錢進了銀行" ); } public void 存錢() { System.out.println( "錢從銀行進行個人手里" ); } @Override public void kaimen() { System.out.println( "銀行有個大門,能打開" ); } @Override public void guamen() { System.out.println( "銀行有個鐵門,關了以后誰都進不來了" ); } } class Test4{ public static void main(String[] args) { 工商銀行 bank= new 工商銀行(); bank.取錢() ; bank.存錢() ; System.out.println( "銀行的底是" +bank.MONEY); bank.kaimen(); bank.guamen(); bank.貨幣流通(); } } |
最后的彩蛋彩蛋彩蛋!!!!
由于我在練習的時候將這幾個例題放在了同一個TT包下,一共有5個文件。最后的最后,上面的后三個例子開始報錯(比如報錯:The type 銀行標準 is already defined)。
啊啊啊啊,調試半個小時,都沒弄好。后來靜一下想,既然Eclipse提示XXX已經定義了,是不是只要在同一個包下,無論你建立多少個類,里面都不能重復定義相同類名文件呢?之后就開始Delete兩個),果然,成功啦。仔細一想,既然同一個包下,公共類之間可以訪問,這種排同性就是驗證啊,也可以省下很多資源。
以上這篇Java基礎篇_有關接口和抽象類的幾道練習題(分享)就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持服務器之家。