下面小编就为大家带来一篇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 工商银行(); bank.取钱() ; bank.存钱() ; System.out.println("银行的底是"+bank.MONEY); bank.kaimen(); bank.guamen(); bank.货币流通(); } }
最后的彩蛋彩蛋彩蛋!!!!
由于我在练习的时候将这几个例题放在了同一个TT包下,一共有5个文件。最后的最后,上面的后三个例子开始报错(比如报错:The type 银行标准 is already defined)。
啊啊啊啊,调试半个小时,都没弄好。后来静一下想,既然Eclipse提示XXX已经定义了,是不是只要在同一个包下,无论你建立多少个类,里面都不能重复定义相同类名文件呢?之后就开始Delete两个),果然,成功啦。仔细一想,既然同一个包下,公共类之间可以访问,这种排同性就是验证啊,也可以省下很多资源。
以上是Java有关接口和抽象类的练习题的详细内容。更多信息请关注PHP中文网其他相关文章!

本篇文章给大家带来了关于java的相关知识,其中主要介绍了关于结构化数据处理开源库SPL的相关问题,下面就一起来看一下java下理想的结构化数据处理类库,希望对大家有帮助。

本篇文章给大家带来了关于java的相关知识,其中主要介绍了关于PriorityQueue优先级队列的相关知识,Java集合框架中提供了PriorityQueue和PriorityBlockingQueue两种类型的优先级队列,PriorityQueue是线程不安全的,PriorityBlockingQueue是线程安全的,下面一起来看一下,希望对大家有帮助。

本篇文章给大家带来了关于java的相关知识,其中主要介绍了关于java锁的相关问题,包括了独占锁、悲观锁、乐观锁、共享锁等等内容,下面一起来看一下,希望对大家有帮助。

本篇文章给大家带来了关于java的相关知识,其中主要介绍了关于多线程的相关问题,包括了线程安装、线程加锁与线程不安全的原因、线程安全的标准类等等内容,希望对大家有帮助。

本篇文章给大家带来了关于Java的相关知识,其中主要介绍了关于关键字中this和super的相关问题,以及他们的一些区别,下面一起来看一下,希望对大家有帮助。

本篇文章给大家带来了关于java的相关知识,其中主要介绍了关于枚举的相关问题,包括了枚举的基本操作、集合类对枚举的支持等等内容,下面一起来看一下,希望对大家有帮助。

封装是一种信息隐藏技术,是指一种将抽象性函式接口的实现细节部分包装、隐藏起来的方法;封装可以被认为是一个保护屏障,防止指定类的代码和数据被外部类定义的代码随机访问。封装可以通过关键字private,protected和public实现。

本篇文章给大家带来了关于java的相关知识,其中主要介绍了关于设计模式的相关问题,主要将装饰器模式的相关内容,指在不改变现有对象结构的情况下,动态地给该对象增加一些职责的模式,希望对大家有帮助。


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

螳螂BT
Mantis是一个易于部署的基于Web的缺陷跟踪工具,用于帮助产品缺陷跟踪。它需要PHP、MySQL和一个Web服务器。请查看我们的演示和托管服务。

PhpStorm Mac 版本
最新(2018.2.1 )专业的PHP集成开发工具

VSCode Windows 64位 下载
微软推出的免费、功能强大的一款IDE编辑器

记事本++7.3.1
好用且免费的代码编辑器

Atom编辑器mac版下载
最流行的的开源编辑器