728x90

1. 사용방법

 

public interface studyInterface {

    // 상수선언
    public static final int MaxNum = 10;
    public int minNum = 0;

    // 추상메소드 선언
    public void entrance();
    public void exit();

}

 - 인터페이스에서는 멤버변수 및 메소드를 추상적으로 선언한다.

public class StudyImplements implements studyInterface {

    @Override
    public void entrance() {
        System.out.println("입구입니다.");
    }

    @Override
    public void exit() {
        System.out.println("출구입니다.");
    }

}

 - 인터페이스를 implements로 상속해서 추상적으로 선언된 메소드를 재정의하면서 구현한다.

public class studyMain {

    public static void main(String[] args) {
        StudyImplements studyImplements = new StudyImplements();

        studyImplements.entrance();
        studyImplements.exit();
        System.out.println(studyImplements.MaxNum);
        System.out.println(studyImplements.minNum);
        
        // ※ 출력결과.
        // 입구입니다.
        // 출구입니다.
        // 10
        // 0
    }

}

 - studyImplements의 인스턴스를 생성하여 선언된 변수 및 메소드를 실행한다.

 

2. 인터페이스(interface) 특징

  ① 인터페이스는 구현(implements)할 메소드를 재정의해야한다. 그래서 메소드를 경우에따라 재사용할 수 있기 때문에 유지보수하기 편리하다.

 

  ② 백엔드에서 신규개발 시 interface에서는 설계만 하기때문에 기능 구현을 상속을 받으며 할 수 있어서 형상관리할 때 충돌이 발생하지 않고도 동시에 작업을 할 수 있다.

 

  ③ 객체지향 설계 5원칙중 OCP(Open Close Principle)를 지킬 수 있다.

    - 즉 기존 시스템에서 사용하던 기능을 수정할 필요가 없이 확장만 할 수 있다.

3. 추상 클래스(abstract)와 차이

 ① 인터페이스에서는 메소드의 기능을 구현할 수 없다.

// 인터페이스
public interface studyInterface {

    public void entrance();  // O
    public void entrance() { // X
    
    }

}

// 추상클래스
public abstract class studyAbstract {
    public void entrance();  // X
    public void entrance() { // O
    
    }
}

   - 인터페이스에서는 메소드 기능을 구현할 수 없다. 구현체(implements)에서 override로 정의해야한다.

하지만 추상클래스에서는 메소드 기능을 무조건 정의해야한다.

 

 ② 인터페이스는 2개 이상 상속이 가능하다.

// 인터페이스는 2개 이상 상속 가능
public class StudyImplements implements studyInterface, studyInterface2 {

}

// 추상 클래스는 2개 이상 상속 불가능
public class StudyImplements extends studyAbstract, studyAbstract2 {

}

 - 인터페이스에서 2개 이상의 클래스를 상속 한 경우 각 클래스마다 중복되거나 중복되지 않은 메소드들을 재정의 할 수 있다.

728x90
TOP