(강아지는 형태가 있으니 추상x, 동물은 추상)
(미완성 된 클래스이기 때문이다. = 본문이 없는 메소드가 있기 때문에 미완성 클래스.)
(추상 메소드만 오버라이드 하면 된다.)
public abstract class Person {
public void eat() {
System.out.println("냠냠");
}
public void sleep() {
System.out.println("쿨쿨");
}
// 호출을 위해서 생성한 study 메소드
// 본문이 필요 없기 때문에 본문이 없는 메소드로 만들 수 있다.
// 본문이 없는 메소드를 "추상 메소드"라고 한다.
// abstract 키워드를 추가하고 본문({})을 제거한다.
public abstract void study();
}
public class Student extends Person {
public void study() {
System.out.println("공부");
}
}
public class MainWrapper {
public static void main(String[] args) {
// 추상 클래스 Person은 객체를 생성할 수 없다.
// Person p1 = new Person(); --> 불가능함.
p1.eat();
p1.sleep();
Person p2 = new Student();
p2.eat();
p2.sleep();
// study 메소드를 만들었지만, Person타입이기에 Person메소드만 호출 가능.
// Person 에 빈 study 메소드를 만들어줘서 오버라이드 함.
}
}