lang/java

java 추상클래스(Abstract class)

C/H 2007. 6. 20. 04:04
추상클래스(Abstract class)

추상클래스 대상
* 객체를 생산할 필요가 없다고 판단될 때
    - 클래스가 추상적인 의미로만 존재해서 직접 객체를 만들기에 애매모호할 때
* 사옥 받은 클래스 들에게 반드시 구현하게 하고 싶은 메소드가 잇을 때
    - 추상 메소드라는 것을 이용해서 상속 받는 자식이 받드시 구현하게 만들 때

추상클래스 만드는 방법
1. 하위 클래스에서 재작성될 메소드는 'abstract'라는 키워드를 사용한다.
2. 메소드 내에 {}와 함께 모든 내용을 없앤다.
3. 형태는 abstract 메소드 선언 ;로 변수처럼 해준다.
4. 추상 메소드를 가지고 있는 클래스 역시 'abstract'를 붙여준다.

[code type=java]
abstract class Person2{
    String name;
    public abstract void goToSchool();
}
[/code]

추상클래스는 자신의 여러 메소드 중에서 하나라도 abstract 메소드가 있을 경우에는 추상클래스라고 선언해야 한다.

추상클래스 주의점
추상클래스는 정확한 클래스의 정의가 아니라 단순한 클래스의 모델이므로 객체를 생성할 수 없다. 때문에 추상 클래스에서 객체를 생성할 수 없다.

추상클래스는 abstract 메소드로 선언된 메소드는 하위 클래스에서 반드시 구현해 주어야 한다.
이것은 추상 메소드르 ㄹ구현한 자식 클래스야 말로 진정한 자식이라는 의미이다.
추상 클래스는 하위의 자식 클래스(sub class)들에게 강제적인 abstract를 구현하게 하여 공통적인 메소드를 재작성하게 만드는 기능이 있다. 이전의 School.java(오버라이딩)를 컴파일 하면 객체를 생성할 수 없기 때문에 아래와 같은 에러를 볼 수 있다.

    School.java:5: Person is abstract; cannot be instantated

반응형

'lang > java' 카테고리의 다른 글

java 다형성(Polymorphism)  (0) 2007.06.20
java final 키워드  (0) 2007.06.20
java 오버라이딩(Overriding)과 오버로딩(Overloading)  (0) 2007.06.20
java 상속(Inheritance)  (0) 2007.06.20
java - 신입 사원이 알아야 할 기본 지식  (1) 2007.02.01