这里有新鲜出炉的Java并发编程示例,程序狗速度看过来!
java 是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由Sun Microsystems公司于1995年5月推出的Java程序设计语言和Java平台(即JavaEE(j2ee), JavaME(j2me), JavaSE(j2se))的总称。
下面小编就为大家带来一篇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基础篇_有关接口和抽象类的几道练习题(分享)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持PHPERZ。
来源: http://www.phperz.com/article/17/0904/338205.html