본문 바로가기
CSE/CP1 이론

CP1_08. 객체지향프로그래밍_Advanced_인터페이스

by 0/0 2024. 6. 10.
1. Basics 클래스, 객체, 변수, 메서드 // 생성자, 초기화
2. Advanced 상속, 오버라이딩 // package, import, modifiers, 다형성 // 추상클래스, 인터페이스, 내부클래스
8. 인터페이스(interface) 1. 인터페이스
2. 인터페이스의 작성
3. 인터페이스의 상-하 관계
4. 인터페이스의 구현
5. 인터페이스를 이용한 다중 상속
6. 인터페이스를 이용한 다형성
7. 인터페이스의 장점
8. 인터페이스의 이해
9. 디폴트 메서드

 

7.1 인터페이스 '추상 클래스보다 더 추상적 구체적인 것이 거의 없음'

-클래스, 특히 abstract 클래스와 유사

-모든 멤버변수: 자동으로 public static final로 정의됨

-모든 메서드: 구현 없이 선언만 있고 자동으로 public abstract로 선언됨

 

7.2 인터페이스의 특징

interface 인터페이스이름 {
    public static final 타입 상수이름 = 값;
    public abstract 리턴타입 메서드이름(매개변수목록);
}

 

-인스턴스를 생성할 수 없음

-다른 클래스 작성에 도움을 줄 목적으로 사용

  • 인터페이스끼리 계승
    -인터페이스는 인터페이스로부터만 계승
    -클래스와 달리 다중상속(여러 부모)이 허용됨
    -최고상위인터페이스라는 것은 없음(like 클래스의 class Object)

7.3 인터페이스의 구현

:인터페이스에 정의된 추상메서드를 완성하는 것

class 클래스이름 implements 인터페이스이름 {
	//인터페이스에 정의된 추상메서드를 구현
}

인터페이스의 구현

7.4 인터페이스를 이용한 다중상속

:클래스는 다중상속이 불가능하기 때문에 우회적으로 인터페이스를 이용해서 클래스를 다중상속할 수 있음.

 *이 방법은 클래스를 다중상속하는 방법들 중 전형적 방법에 해당함.

인터페이스를 이용한 다중상속

 

7.5 인터페이스를 이용한 다형성(시험-중요)-인터페이스 타입의 참조변수로 인터페이스를 구현한 클래스의 인스턴스 참조 가능

-인터페이스 타입으로 형변환 가능

인터페이스 타입으로 형변환

-메서드의 매개변수 타입으로 지정 가능

인터페이스를 메서드의 매개변수 타입으로 지정 가능

-메서드의 리턴타입으로 지정 가능

인터페이스를 메서드의 리턴타입으로 지정 가능

 

7.6 인터페이스의 장점(시험-x)

인터페이스의 장점

7.9 디폴트 메서드

추상 메서드의 기본적인 구현을 제공하는 메서드(인터페이스에 추가된 일반 메서드)

 

-추가된 디폴트 메서드와 기존 메서드와의 이름 충돌 해결 규칙

1. 여러 인터페이스의 디폴트 메서드 간의 충돌

-인터페이스를 구현한 클래스에서 디폴트 메서드를 오버라이딩 해야함

2. 디폴트 메서드와 상위 클래스 메서드 간의 충돌

->상위 클래스의 메서드가 상속됨 디폴트 메서드는 무시됨

 

=> 1.과 2.의 이유로 디폴트 메소드는 사용 지양