1. 추상화의 개념
: 불필요한 정보 숨기고 중요한 정보만을 나타내는 것
자바에서 추상화 사용의 장점
1. 객체 간의 복잡성이 줄어듦
2. 코드의 중복을 막고 재사용성 up
3. 프로그램의 보안에 도움
추상화는 추상 클래스 or 인터페이스를 통해 구현 가능
추상 클래스 | 인터페이스 |
한 번에 하나의 클래스 또는 추상 클래스만 상속 가능 | 한 번에 원하는 만큼의 인터페이스 상속 가능 |
다른 구체적인 클래스 또는 추상 클래스 상속 가능 | 다른 인터페이스만 상속 가능 |
추상 메서드와 구체적인 메서드를 모두 가질 수 있음 | 추상 메서드만 가질 수 있음 |
메서드를 추상으로 선언하는 abstract 키워드가 필요 | 메서드를 추상으로 선언하는 데 abstract 키워드가 선택 사항 |
protected, public이 선언된 추상 메서드를 가질 수 있음 | public이 선언된 추상 메서드 가질 수 있음 |
모든 접근제한자와 함께 static, final, static final 변수를 가질 수 있음 | staic final(상수) 변수만 가질 수 있음 |
2. 추상 클래스
abstract class 클래스명 {
반환유형 메서드명([매개변수목록]); -> 일반 메서드
abstract 반환유형 메서드명([매개변수목록]); -> 추상 메서드
}
추상 메서드
- 자식 클래스에서 구현됨 (부모 클래스는 메서드명만 가지고 있음)
- 추상 클래스는 포함할 수도 않을 수도 but 추상 메서드가 포함되어 있으면 반드시 추상 클래스로 선언!!
※ 추상 클래스 주.의.사.항 ※
1. 추상 클래스는 항상 abstract 키워드 사용하여 선언
2. 추상 클래스의 모든 메서드를 추상으로 사용할 필요 없음
3. 추상 메서드이면 추상 클래스여야 함
4. 추상 클래스를 상속하는 경우 메서드를 재정의는 필수
5. 추상 클래스의 객체는 가질 수 없음
6. 단일 클래스가 여러 추상 클래스 상속 x
3. 인터페이스
: 추상 클래스와 달리 추상 메서드만 포함 가능
interface 인터페이스명 {
반환유형 변수 [=값];
반환유형 메서드명([매개변수목록]);
}
interface Parent {
int age = 50;
void printInfo();
}
인터페이스 메서드
- 기본적으로 public과 abstract이므로 명시적으로 선언하지 않아도 됨
- 인터페이스를 상속받는 클래스에서 모든 메서드를 구현해야 함
인터페이스 변수
- 인터페이스는 변수를 포함할 수 있으나 선언하지 않는 것이 좋음
-> 상속받는 클래스에 동일한 변수가 있으면 중복되기 때문
- 기본적으로 public, static, final이므로 명시적으로 선언하지 않아도 됨
'Study > Java Study' 카테고리의 다른 글
11장. 예외 처리 (0) | 2023.05.28 |
---|---|
10장. 패키지 (0) | 2023.05.28 |
8장. 상속과 다형성 (1) | 2023.05.21 |
7장. 클래스와 객체 (0) | 2023.05.20 |
6장. 배열과 문자열 (0) | 2023.05.20 |