[JAVA] 인터페이스

    인터페이스 작성 및 구현

    인터페이스의 멤버들의 제약사항

    - 모든 멤버변수는 public static final (상수)이어야 하며, 이를 생략할 수 있다.

    - 모든 메서드는 public abstract (추상 메서드)이어야 하며, 이를 생략할 수 있다.

    추상클래스와 달리 몸통을 갖춘 일반 메서드 또는 멤버변수를 구성원으로 가질 수 없다. 

     

    public interface Movable {
        void move(int x, int y); // (1)
    }

     

    public class Person implements Movable{
    //    void move(int x, int y) { // (2)
    //    }
    
        @Override
        public void move(int x, int y) {
        }
    }

     

    (1) 인터페이스에 생략된 제어자는 컴파일러가 자동적으로 추가해준다. 그래서 실제로는 public void move(int x, int y); 이다

    (2) 오버라이딩 할 때는 조상의 메서드보다 넓은 범위의 접근 제어자를 지정해야 하기 때문에 인터페이스를 구현하는 클래스에서는 오버라이딩한 메서드의 접근 제어자를 반드시 public으로 해야한다.

     

    인터페이스를 이용한 다형성

    void fly(Movable movable){   
    }

     

    매개변수 타입이 인터페이스라는 것은 메서드 호출 시 해당 인터페이스를 구현한 클래스의 인스턴스를 매개변수로 제공해야한다는 것이다.

     

    Movable fly(){
        Person person = new Person();
        return person;
    }

    리턴타입이 인터페이스라는 것은 메서드가 해당 인터페이스를 구현한 클래스의 인스턴스를 반환한다는 것이다.

     

    인스턴스의 장점

    1. 개발 시간을 단축시킬 수 있다.

    2. 표준화가 가능하다.

    3. 서로 관계없는 클래스들에게 관계를 맺어 줄 수 있다.

    4. 독립적인 프로그래밍이 가능하다.

    - 클래스와 클래스 간의 직접적인 관계를 인터페이스를 이용해 간접적인 관계로 변경하면, 한 클래스의 변경이 관련된 다른 클래스에 영향을 미치지 않는다.


    참고: 자바의 정석 - 남궁성

     

    🤞자바의 정석 스터디 7일차 p375-402🤞

     

     

    728x90

    댓글