추상메서드는 선언부만 정의하고 구체적인 내용은 비워놓은 메서드
추상메서드가 있는 클래스를 상속받는 자식클래스는 반드시 부모클래스의 추상 메서드를 구현해야한다.
즉, 자식클래스에서 메서드를 구체적으로 작성하기 위해 부모클래스에서는 내용을 적지 않는 것
abstract 리턴타입 메서드명();
## 구현하지 않으므로 {}생략하고 ;으로 마무리
추상 클래스는 추상 메서드를 멤버(필드)로 갖는 클래스
구현은 자식 클래스가 하도록 메서드의 기능을 비워놓고 싶을 때 사용한다.
absctract class 클래스명{
...
abstract 리턴타입 메서드명();
}
public static void main(String[] args) {
Shape shapes[]=new Shape[3];
//부모의 객체배열 요소에 자식 값 넣기=> 업 캐스팅
shapes[0]=new Rect();
shapes[1]=new Circle();
shapes[2]=new Line();
for(int i=0;i<3;i++) {
shapes[i].draw();
}
}
}
//추상화
abstract class Shape{
abstract void draw();
}
class Rect extends Shape{
void draw() {
System.out.println("사각형을 그리다");
}
}
class Circle extends Shape{
void draw() {
System.out.println("원을 그리다");
}
}
class Line extends Shape{
void draw() {
System.out.println("선을 그리다");
}
}