欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2023-12-13 20:53:52
呃,一定要理解之后自己敲!!!这几道题,使我进一步了解了接口和抽象类。 1.设计一个商品类 字段: 商品名称,重量,价格,配件数量,配件制造厂商(是数组,因为可能有多个...

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

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.货币流通();
  
  }
}

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

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

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

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

以上这篇java基础篇_有关接口和抽象类的几道练习题(分享)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。

上一篇:

下一篇: