컴퓨터공학 💻 도서관📚
Part2. 3-9 추상 클래스(abstract class) 구현하기 본문
추상 클래스
- 구현 코드 없이 메서드의 선언만 있는 추상 메서드(abstract method)를 포함한 클래스
- 메서드 선언(declaration) : 반환타입, 메서드 이름, 매개변수로 구성
- 메서드 정의(definition) : 메서드 구현(implementation)과 동일한 의미 구현부(body) 를 가짐 ( { } )
- 예) int add(int x, int y); // 선언 (추상 메서드)
int add(int x, int y) { } // 구현부가 있음, 추상 메서드 아님 - abstract 예약어를 사용
- 추상 클래스는 new 할 수 없음 ( 인스턴스화 할 수 없음 )
왜냐하면 만약에 new 해서 computer 클래스 인스턴스를 생성하고 display() 메서드를 호출을 하면
display() 메서드에 대한 구현 코드가 없다. 실행될 부분이 없기에 추상 클래스를 new 할 수 없다.
추상 메서드를 만드는 이유
하위 클래스들이 공통으로 쓸 method는 구현해 놓고
이 클래스에서 구현하지 않을 얘들은 추상 method로 놓고 하위 클래스에게 그 책임을 위임한다
상위 클래스는 구현하지 않을 테니 상속 받는 님들이 알아서 너한테 맞게 구현해라 라는 뜻이다.
프레임워크를 사용할 때 어떤 클래스를 상속받으면 구현되어 있는 메서드도 있지만 구현이 안 되어 있는 부분도 많다.
구현이 안 되어 있는 부분이 상속을 받아서 내가 구현을 하는 것이다.
추상 클래스는 상속을 위한 클래스이다. ( 이 클래스의 존재 목적 )
추상 클래스 구현하기
- 메서드에 body부분이 없으면 abstract 로 선언한다
- abstract로 선언된 메서드를 가진 클래스는 abstract로 선언한다
- 모든 메서드가 구현 된 클래스라도 abstract로 선언되면 추상 클래스이기에 인스턴스화 할 수 없다
위와 같은 클래스의 의미:
이 클래스에서 여러 가지 기능들을 구현했지만 이 기능들을 가지고 인스턴스화해서 쓸게 아니고
이 클래스는 상속만을 하기 위한 클래스라는 것을 의미한다. - 추상 클래스의 추상 메서드는 하위 클래스가 상속 하여 구현한다
- 추상 클래스 내의 추상 메서드 : 하위 클래스가 구현해야 하는 메서드
- 추상 클래스 내의 구현된 메서드 : 하위 클래스가 공통으로 사용하는 메서드 ( 필요에 따라 하위 클래스에서 재정의 함 )
추상클래스를 protected 이상 으로 선언해서
1. 참조 자료형으로 쓰거나
2. 상속해서 쓰거나 등등등
// 상위 클래스 Computer 클래스
public abstract class Computer { // 추상 클래스
abstract void display(); // 추상 메서드
abstract void typing();
public void turnOn() { // 구현된 메서드
System.out.println("전원을 켭니다.");
}
public void turnOff() {
System.out.println("전원을 끕니다.");
}
}
// 하위 클래스 DeskTop
public class DeskTop extends Computer{ // 추상 클래스 아님
@Override // 추상 메서드를 하위 클래스에서 정의 ( 재정의를 해서 사용 )
void display() {
System.out.println("DeskTop display");
}
@Override
void typing() {
System.out.println("DeskTop typing");
}
@Override // 이미 구현되어 있었던 메서드를 재정의
public void turnOff() {
System.out.println("Desktop turnoff");
}
}
// 하위 클래스 : NoteBook 클래스 : 추상 클래스는 상속을 위한 클래스
public abstract class NoteBook extends Computer{ // 추상 클래스
@Override
public void typing() {
System.out.println("NoteBook typing");
}
}
이태릭체 ( 비스듬하게 생긴 글씨체 )
클래스 다이어그램에서 이태릭체로 되어 있는 클래스와 메서드는 추상 클래스, 추상 메서드이다.
'✅🌲강의 복습 노트 > 패캠 JavaSpring 강의,코드 복습' 카테고리의 다른 글
Part2. 3-11 인터페이스(interface) (1) | 2025.06.09 |
---|---|
Part2. 3-10 추상 클래스의 응용 -- 템플릿 메서드 패턴 (3) | 2025.06.06 |
Part2. 3-8 다운 캐스팅과 instanceof (0) | 2025.06.05 |
Part2. 3-7 상속은 언제 사용 할까? (0) | 2025.06.05 |
Part2. 3-6 다형성과 다형성을 사용하는 이유 (0) | 2025.05.26 |
Comments