반응형
#1 추상 클래스 & 추상 메서드
▶ 추상 클래스란?
- 일반 클래스처럼 독립적으로 생성자를 호출해 객체를 생성할 수 없음
- 자식 클래스의 생성자에서 super()를 통해 추상 클래스의 생성자를 호출하여 부모 객체를 생성한 후 자식 객체를 생성
- 선언: [접근 제한자] abstract class 클래스명 {필드, 생성자, 메서드}
- 자식 클래스들이 반드시 구현해야 하는 메서드가 있다면, 추상 메서드로 해당 메서드를 부모 클래스에 선언
- 추상 클래스를 상속받은 모든 자식 클래스는 반드시 추상 메서드를 오버라이딩 및 재정의하여 구현해야 함
- 자식 클래스 간의 공통적인 필드와 메서드 이름을 통일
- 반드시 구현해야 하는 메서드를 선언함으로써 공통 규격을 제공
▶ 추상 메서드란?
- 구현 내용 없이 구현부가 비어있는 메서드
- 선언: [접근제한자] abstract 반환타입 메서드명(매개변수1,...);
- 추상 메서드를 1개 이상 선언하면, 그 클래스는 추상 클래스로 선언되어야 함
#2 인터페이스 구현
- 인터페이스: 모든 메서드가 추상 메서드, 상수로만 이루어짐
- 어떤 형태로도 객체를 만들 수 없으므로 클래스라고 부를 수 없음
- 별도의 필드와 생성자도 존재하지 않으며 필드 대신 상수를 선언해 사용
- 선언: interface 키워드를 사용해 선언
[접근 제헌자] interface 인터페이스명 {
public static final 자료형 상수명 = 값;
접근 제한자 abstract 메서드명(매개변수1, ...)
}
< 상수 선언 >
- public: 인터페이스는 다른 클래스들의 접근이 가능해야 하므로 public을 작성
- static: 객체가 생성되지 않은 인터페이스라서, 내부 상수에 접근하려면 클래스 변수처럼 static으로 선언되어 메모리에 올라가 있어야 함
- final: 상수를 의미하는 키워드
- 상수명: 영문 대문자로 작성, 언더바(_) 사용
#3 인터페이스 사용
▶ 구현 클래스
- 추상 클래스는 객체 생성을 할 수 없으므로 자신이 가진 추상 메서드를 구현해 줄 클래스를 작성해야 함
- 선언: implements 키워드를 사용
- 인터페이스를 구현하려면 모든 추상 메서드를 구현해야 함
- 구현 클래스에서 추상 메서드를 구현할 때는 반드시 접근 제한자를 public으로 지정
[접근 제한자] class 클래스명 implements 인터페이스명 {
// 필드
// 생성자
// 구현 메서드(추상 메서드 오버라이딩)
}
▶ 인터페이스 사용의 장점
- 정보은닉: 실제 구현 클래스의 내용을 보지 않고도 개발 코드로 객체 사용 가능
- 모듈화: 구현 클래스들이 독립적으로 구현되고 사용 가능, 개발 코드에서 객체 변경이 필요할 때, 개발 코드의 수정을 최소화할 수 있음
▶ 다중 인터페이스 구현
- 하나의 클래스로 여러 개의 인터페이스 구현 가능
- 단, 선언한 모든 인터페이스에 대한 추상 메서드를 모두 구현해야 함
[접근 제한자] class 클래스명 implements 인터페이스1, 인터페이스2, ... {
// 필드
// 생성자
// 인터페이스1에 대한 구현 메서드(추상 메서드 오버라이딩)
// 인터페이스2에 대한 구현 메서드(추상 메서드 오버라이딩)
}
#4 인터페이스 상속
- 인터페이스끼리 상속 관계 만들 수 있음
- extends 키워드를 사용
- 다중 상속 가능하기에 콤마(,) 이용
[접근 제한자] interface 인터페이스명 extends 인터페이스1, 인터페이스2, ... {
// 추상 메서드
}
반응형
'개발 > Java' 카테고리의 다른 글
JAVA_14_예외 처리 (1) | 2024.07.16 |
---|---|
JAVA_13_내부 클래스 (0) | 2024.07.16 |
JAVA_11_다형성 & 타입 변환 (1) | 2024.07.16 |
JAVA_10_상속 (0) | 2024.07.16 |
JAVA_09_생성자 (0) | 2024.07.15 |