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 추가
- 다형성
- 타입변환
- 자동 타입변환: 인터페이스명 변수 = new 구현객체; (특정 클래스를 인터페이스로)
- 강제 타입변환: 구현객체타입 변수 = (구현객체타입) 인터페이스 변수; (인터페이스로 형변환했던 클래스를 다시 원래의 클래스로 강제 변환)
- 인터페이스명 변수 = 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 |