본문 바로가기

Study/Java Study

9장. 추상 클래스와 인터페이스

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