>  기사  >  Java  >  인터페이스 및 추상 클래스에 대한 Java 기본 예

인터페이스 및 추상 클래스에 대한 Java 기본 예

怪我咯
怪我咯원래의
2017-06-26 11:50:521545검색

글쎄, 이해하고 직접 입력해야 해요! ! ! 이러한 질문은 인터페이스와 추상 클래스에 대해 더 많이 배우는 데 도움이 되었습니다.

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. 추상 클래스를 설계하고 그 사용법을 보여줍니다(레벨 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. 인터페이스를 설계하고 구현 클래스를 구현합니다


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. 클래스를 상속하면서 두 개의 인터페이스를 구현합니다(구체적으로는 직접 디자인한 인터페이스)

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

마지막 부활절 달걀 부활절 달걀! ! ! !

실습할 때 이 예제들을 같은 TT 패키지에 넣었기 때문에 총 5개의 파일이 있습니다. 마지막으로 위의 마지막 세 가지 예에서는 오류를 보고하기 시작했습니다(예: 오류: 은행 표준 유형이 이미 정의되어 있음).

아아아아아아아, 30분 동안 디버깅을 했는데도 여전히 제대로 작동하지 않습니다. 나중에 나는 진정하고 생각했습니다. Eclipse에서 XXX가 정의되었다는 메시지가 표시되므로 동일한 패키지에 있는 한 아무리 많은 클래스를 생성하더라도 동일한 클래스 이름을 가진 파일을 반복적으로 정의할 수 없다는 뜻일까요? 그런 다음 두 개를 삭제하기 시작했고, 확실히 성공했습니다. 잘 생각해보면 같은 패키지에 있는 public 클래스에 접근이 가능하기 때문에 이러한 배타성은 검증이자 많은 리소스를 절약할 수 있다.

위 내용은 인터페이스 및 추상 클래스에 대한 Java 기본 예의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.