추상 메소드, 클래스(abstract method, class)
1. 추상 메소드 (abstract method) : 선언되어있고 구현 안 된 메소드
- 형식 : (접근제한자) abstract (반환타입) Method1();
- 추상메소드는 서브클래스에서 오버라이딩으로 구현. 추상 클래스는 비워둔다.
2. 추상 클래스 (abstract class)
- 형식 : (접근제한자) abstract class Class1 {}
- 추상 클래스는 인스턴스 생성 불가능
- 종류
i) 추상 메소드를 하나라도 가진 클래스
ex)
abstract class Shape {
public Shape() {}
public void paint() { draw(); }
abstract public void draw();
}
ii) 추상 메소드가 하나도 없지만 abstract로 선언된 클래스
ex)
abstract class MyComponent {
String name;
public void load(String name) {
this.name = name;
}
}
4. 추상 클래스의 상속
- 종류
i) 단순 상속 - 추상 클래스를 상속받아 추상 메소드를 구현하지 않아도 자동으로 추상 클래스가 된다.
- 서브클래스도 abstract를 선언해줘야함
ex)
abstract class Shape { // 추상 클래스
public Shape() { }
public void paint() { draw(); }
abstract public void draw(); // 추상 메소드
}
abstract class Line extends Shape { // 추상 클래스. draw()를 상속받기 때문
public String toString() { return "Line"; }
}
5. 추상 클래스는 왜 쓰는가?
- 설계와 구현의 분리 : 슈퍼클래스의 메소드를 상속받을 서브클래스들이 있고 그들마다 용도가 다를 경우 상속할 메소드를 추상메소드로 선언한다.
'Programming > Java' 카테고리의 다른 글
6장. 패키지와 활용 #1 패키지 (0) | 2020.06.14 |
---|---|
5장. 상속 #6 인터페이스 vs 추상클래스 (0) | 2020.06.14 |
5장. 상속 #3 오버라이딩 (0) | 2020.06.12 |
Troubleshoot #1 No enclosing instance of type ... is accessible (0) | 2020.06.11 |
5장. 상속 #2 업/다운캐스팅 (0) | 2020.06.11 |
댓글