Java基础篇_有关接口和抽象类的几道练习题(分享)

网友投稿 366 2023-05-06


Java基础篇_有关接口和抽象类的几道练习题(分享)

呃,一定要理解之后自己敲!!!这几道题,使我进一步了解了接口和抽象类。

1.设计一个商品类 字段:

商品名称,重量,价格,配件数量,配件制造厂商(是数组,因为可能有多个制造厂商)

要求: 有构造函数

重写 toString 方法

重写 equals方法,进行两件商品的比较

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.设计一个抽象类,并演示它的使用 (三级)

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.设计一个接口, 并设计一个实现类,实现这个接口

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.设计一个类,可以同时实现多个接口

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.设计一个类,在继承一个类的同时,实现其的两个接口(具体是什么接口自行设计)

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 工商银行();

banhttp://k.取钱() ;

bank.存钱() ;

System.out.println("银行的底是"+bank.MONEY);

bank.kaimen();

bank.guamen();

bank.货币流通();

}

}

最后的彩蛋彩蛋彩蛋!!!!

由于我在练习的时候将这几个例题放在了同一个TT包下,一共有5个文件。最后的最后,上面的后三个例子开始报错(比如报错:The type 银行标准 is already defined)。

啊啊啊啊,调试半个小时,都没弄好。后来静一下想,既然Eclipse提示XXX已经定义了,是不是只要在同一个包下,无论你建立多少个类,里面都不能重复定义相同类名文件呢?之后就开始Delete两个),果然,成功啦。仔细一想,既然同一个包下,公共类之间可以访问,这种排同性就是验证啊,也可以省下很多资源。


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:如何实现接口(如何实现接口的幂等性)
下一篇:spring boot 1.5.4 web容器定制(端口号等修改)方法
相关文章

 发表评论

暂时没有评论,来抢沙发吧~