Ⅰ. 추상클래스 (abstract class)
1. 추상클래스의 위치
2. 추상클래스의 개념
- 추상메소드(abstract method)를 포함한 클래스
- 메소드의 본체({ })가 없고 세미콜론(;)으로 끝남
3. 오버라이딩(overriding) vs. 구현하기(implements)
- 오버라이딩 (overriding)
- 부모클래스의 메소드(완성/미완성)를 자식클래스에서 재정의(완성)
- 구현하기 (implements)
- 부모클래스의 미완성메소드(추상메소드)를 자식클래스에서 재정의(완성)
4. 추상클래스의 특징
- class 앞에 abstract를 붙여야 함
- 추상클래스는 그 자체로는 객체 생성 불가함 (추상메소드(abstract method/미완성 메소드)를 포함하기 때문)
- 추상 클래스는 오로지 상속하기 위해서만 존재
※ 힙(Heap) 메모리에 객체 생성을 위해서는 모두 완성된 메소드를 가질 때만 가능
- 추상 메소드를 상속받은 클래스는 반드시 이를 오버라이딩 해야함
5. 추상클래스 예시
// Example
package sample;
abstract class Poketmon {
// 이 것들을 상속받거든 반드시 오버라이딩(구현)해야 함
abstract void sound();
abstract void attack();
}
class Pikachu extends Poketmon {
void sound() {
System.out.println("피카 피카");
}
void attack() {
System.out.println("백만볼트");
}
}
class Gorapaduck extends Poketmon {
void sound() {
System.out.println("파덕");
}
void attack() {
System.out.println("물대포");
}
}
public class Main {
public static void main(String[] args) {
Poketmon a = new Pikachu();
a.sound(); // 피카 피카
a.attack(); // 백만볼트
Poketmon b = new Gorapaduck();
b.sound(); // 파덕
b.attack(); // 물대포
}
}
'Programming Language > Java' 카테고리의 다른 글
이너클래스 - 1. 이너클래스 (Inner class) (0) | 2022.07.14 |
---|---|
추상클래스 - 2. 인터페이스(Interface) (0) | 2022.07.13 |
자바 제어자2 (modifier) - 2. abstract (0) | 2022.07.13 |
자바 제어자2 (modifier) - 1. final (0) | 2022.07.13 |
상속과 다형성 - 6. 최상위 클래스 Object (0) | 2022.07.12 |