티스토리 뷰
Goal
- 추상 클래스에 대해 알아본다.
- 추상 클래스를 구현하는 방법을 알아본다.
- 추상 클래스를 사용하는 이유에 대해 알아본다.
1. 추상 클래스
- 추상 메서드를 포함한 클래스 (추상 메서드로만 이루어진 것은 아님! 구현된 메서드도 존재)
- 추상 메서드 : 구현 코드가 없이 선언부만 있는 메서드
public abstract void display(); // body부분이 없이 세미콜론으로 끝나는 추상 클래스
- abstract 예약어 사용
- 추상 클래스는 new (인스턴스화) 할 수 없음. (내부에 추상 메서드를 포함하고 있기 때문에)
2. 추상 클래스 구현
public abstract class Computer {
public abstract void display();
public abstract void typing();
}
- 하위 클래스가 추상 클래스를 상속 받을 경우, 하위 클래스는 상위 클래스에서 구현되지 않은 추상 메서드들을 구현해야 한다. 구현하고 싶지 않거나, 일부만 구현하고자 하는 경우는 하위 클래스도 추상 클래스로 선언해야 한다.
- 하위 클래스에 모든 메서드가 구현되었다고 해도 클래스에 abstract 키워드를 사용하면 추상 클래스가 된다. (추상 클래스로 선언이 되면 인스턴스화 할 수 없기 때문에, 클래스를 상속용으로만 쓰기 위해 이러한 방법을 사용한다)
사진 1) 추상 클래스와 하위 클래스의 관계도
- 추상 클래스는 관계도에서 주로 이탤릭체로 표현한다.
3. 추상 클래스를 사용하는 이유
- 추상 클래스는 주로 상속의 상위클래스로 사용됨. (하위 클래스에 구현의 책임을 위임함)
- 주로 상위 클래스를 추상 클래스로 구현하고, 하위 클래스에서 세부적인 기능을 구현 하기 위해 사용.
- 추상 메서드 : 하위 클래스가 구현해야 하는 메서드
- 구현된 메서드 : 하위 클래스가 공통으로 사용하는 기능의 메서드, 하위 클래스에 따라 재정의 할 수 있음
1) 추상클래스의 구현
- 추상 메서드와 구현된 메서드가 같이 있음.
package abstractex;
public abstract class Computer {
public abstract void display();
public abstract void typing();
public void turnOn() {
System.out.println("전원을 켭니다.");
}
public void turnOff() {
System.out.println("전원을 끕니다.");
}
}
'Java > Java 올인원 패키지' 카테고리의 다른 글
19. 인터페이스 (Java) (0) | 2020.03.18 |
---|---|
18. 템플릿 메서드 (Java) (0) | 2020.03.17 |
16. 다운캐스팅과 instanceof (Java) (0) | 2020.03.17 |
14. 메서드 오버라이딩 (Java) (0) | 2020.03.17 |
13. 상속 (Java) (0) | 2020.03.16 |
- likelion
- 20200512
- 20200424
- 20200421
- 20200428
- 20200420
- 20200624
- 생활코딩리눅스
- 20200503
- 20200413
- 20200504
- 20200502
- 20200403
- 20200622
- 백준
- 20200319
- 20201204
- 20200804
- 20200425
- 20200429
- 20200317
- 20200417
- 20200406
- 20200415
- chapter7
- 20200427
- 20200330
- 20200423
- 20200510
- chapter8
- Total
- Today
- Yesterday