Home >Java >javaTutorial >Java basics examples of interfaces and abstract classes

Java basics examples of interfaces and abstract classes

怪我咯
怪我咯Original
2017-06-26 11:50:521626browse

Well, you must understand it and type it yourself! ! ! These questions helped me learn more about interfaces and abstract classes.

1. Design a product field:

Product name, weight, price, quantity of accessories, accessory manufacturer (an array, because there may be multiple manufacturers)

Requirements: There is a constructor

Rewrite the toString method

Rewrite the equals method to compare two products

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. Design a Abstract class and demonstrate its use (Level 3)

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. Design an interface and design an implementation class to implement this interface


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
     }
 }

5. Design a class, and while inheriting a class, implement its two interfaces (specifically design the interfaces yourself)

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();
     }
 }

The last Easter egg Easter egg! ! ! !

Since I put these examples under the same TT package during practice, there are a total of 5 files. Finally, the last three examples above began to report errors (for example, error: The type bank standard is already defined).

Ahhhhhhhhh, debugging for half an hour and still not getting it right. Later, I calmed down and thought, since Eclipse prompts that XXX has been defined, does it mean that as long as it is in the same package, no matter how many classes you create, files with the same class name cannot be defined repeatedly? Then I started to delete two), and sure enough, it was successful. If you think about it carefully, since public classes in the same package can be accessed, this exclusiveness is verification and can also save a lot of resources.

The above is the detailed content of Java basics examples of interfaces and abstract classes. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn