본문 바로가기

JAVA/Java2021-2

여러 인터페이스 구현하기

자바의 다중 상속이 안되는 이유 : 다이아몬드 문제 (다중상속 받았을 때 모호성->안정성 중시)

(인터페이스의 경우 다중상속이 가능)

 

여러 인터페이스 구현 (오픈마켓에서 손님이 판매자이자 구매자가 될 수 있는 상황이라 생각)

package Basic_Grammar.chap3_OOP.ch11;

public class CustomerTest {
    public static void main(String[] args) {
        Customer customer=new Customer();
        customer.buy();
        customer.sell();
        customer.order();
        customer.hello();
        //upcasting
        Buy buyer=customer;
        buyer.buy();
        buyer.order();

        Sell seller=customer;
        seller.sell();
        seller.order();
    }
}

package Basic_Grammar.chap3_OOP.ch11;

public class Customer implements Buy, Sell{

    @Override
    public void buy() {
        System.out.println("cutomer buy");
    }

    //모호한 같은 이름의 메서드 재정의 해주어야한다.
    @Override
    public void order() {
        Buy.super.order();
        Sell.super.order();
    }

    @Override
    public void sell() {
        System.out.println("customer sell");
    }

    public void hello(){
        System.out.println("Hello~~");
    }
}
package Basic_Grammar.chap3_OOP.ch11;

public interface Buy {
    void buy();

    default void order(){
        System.out.println("buy order");
    }

}
package Basic_Grammar.chap3_OOP.ch11;

public interface Sell {
    void sell();

    default void order(){
        System.out.println("sell order");
    }
}