呃,一定要理解之后自己敲!!!这几道题,使我进一步了解了接口和抽象类。
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基础篇_有关接口和抽象类的几道练习题(分享)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持服务器之家。