- 일반적인 방식으로의 Object 생성 불가
일반적으로 우리가 흔히 사용하는 new 명령어로 하여금 Object 생성이 불가능하다.
- 배열 방식으로의 Object 생성
배열로는 new 연산자를 사용하여 Object 생성이 가능하다.
추상클래스(Abstract Class)로 하여금 객체를 만들 수는 없지만, 그 클래스의 변수나 배열에 Sub-class의 객체를 담을 수는 있다.
사용하기 위해선 기본적으로 클래스 명 앞에 abstract 라고 명시해주어야 한다.
추가적으로, 추상클래스에서는 추상메소드(몸체가 존재하지 않는 메소드를 지닐 수 있는 함수) 를 사용할 수 있는데 이러한 추상메소드 명 앞에도 abstract 를 명시해주어야 한다.
아래의 예시와 같이 Human의 추상클래스를 상속받은 모든 서브클래스들(Human1, Human2)은 추상메소드인 whatTheylike()와 같은 이름의 메서드를 지닌 것을 확인할 수 있다.
즉, 추상클래스의 메소드는 Sub-class에서 반드시 오버라이딩 되어야 한다는 의미이다.
결론적으로, 객체를 한 곳에 모아서 손쉽게 시스템을 제어할 수 있게된다.
public abstract class Human {
public abstract void whatTheylike();
public void doTheysleep() {
System.out.println("Every human requires sleep");
}
}
public class Human1 extends Human {
//@overide
public void whatTheylike() {
System.out.println("we like to have chicken.");
}
}
public class Human2 extends Human {
//@overide
public void whatTheylike() {
System.out.println("we like to have pizza.");
}
}
public class TestHuman {
public static void main(String[] args) {
Human human1 = new Human1();
human1.whatTheylike();
Human human2 = new Human2();
human2.whatTheylike();
human1.doTheysleep();
human2.doTheysleep();
}
}