본문 바로가기
[스파르타코딩클럽]/Java 문법 종합반

Chapter 9. 인터페이스

by 진진리 2023. 10. 17.
728x90
  • 인터페이스의 역할: 상속 관계가 없는 다른 클래스들이 메서드를 구현해야 할 때 인터페이스는 구현 클래스들의 동일한 사용 방법과 행위를 보장해줄 수 있음
  • 인터페이스 선언: public, default 접근 제어자 지정 가능
public interface 인터페이스명 { 

}
  • 인터페이스 구성
    • 모든 멤버변수는 public static final이어야 하며, 생략 가능
    • 모든 메서드는 public abstract이어야 하며, 생략 가능
    • 생략된 제어자는 컴파일러가 자동으로 추가
public interface 인터페이스명 { 
    public static final char A = 'A';
    static char B = 'B';
    final char C = 'C';
    char D = 'D';

    void turnOn(); // public abstract void turnOn();
}
  • 인터페이스 구현
    • 클래스에 구현되어 생성됨
    • implements 키워드 사용
    • 인터페이스의 추상 메서드는 반드시 오버라이딩 되어야 함
    • 만약 인터페이스의 추상 메서드를 일부만 구현해야 한다면 해당 클래스를 추상 클래스로 변경
public class 클래스명 implements 인터페이스명 { 
        // 추상 메서드 오버라이딩
        @Override
        public 리턴타입 메서드이름(매개변수, ...) {
            // 실행문
        }
}
  • 인터페이스 간 상속
    • extends 키워드 사용
    • 다중 상속 가능
    • 인터페이스의 구현은 클래스 상속과 함께 사용 가능
public class Main implements C {

    @Override
    public void a() {
        System.out.println("A");
    }

    @Override
    public void b() {
        System.out.println("B");
    }
}

interface A {
    void a();
}
interface B {
    void b();
}
interface C extends A, B { }

 

  • default 메서드
    • 블럭{ }이 존재해야 함
    • 접근 제어자는 public, 생략 가능
    • 추상 메서드가 아니므로 재정의할 필요 없음
  • static 메서드
    • 객체 없이 호출 가능: 인터페이스명.static메서드();
    • 접근 제어자가 없으면 컴파일러가 public 추가

 

  • 다형성
    • 타입변환
      1. 자동 타입변환: 인터페이스명 변수 = new 구현객체; (특정 클래스를 인터페이스로)
      2. 강제 타입변환: 구현객체타입 변수 = (구현객체타입) 인터페이스 변수; (인터페이스로 형변환했던 클래스를 다시 원래의 클래스로 강제 변환)
    • 인터페이스명 변수 = new 구현객체; 를 선언하여 자동 타입변환된 인터페이스 변수를 사용하여 구현 객체의 기능을 조작
    • 어떤 객체가 대입되었느냐에 따라 실행 결과가 다르게 나옴

'[스파르타코딩클럽] > Java 문법 종합반' 카테고리의 다른 글

Chapter 11. 제네릭(Generic)  (0) 2023.10.17
Chapter 10. 예외처리  (0) 2023.10.17
Chapter 8. 상속  (0) 2023.10.16
Chapter 7. 클래스  (0) 2023.10.16
Chapter 6. 컬렉션  (0) 2023.10.13