추상 클래스의 정의
일단 추상 메서드는 메서드의 본체가 완성되지 않은 미완성 메서드를 말한다.
abstract void abc();
추상 메서드를 1개 이상 포함하고 있는 클래스는 반드시 추상 클래스로 정의돼야 한다.
추상 클래스는 class 키워드 앞에 abstract를 붙여 표현한다.
abstract class A{
abstract void abc();
void bcd(){
//...
}
}
추상 클래스의 특징
내부의 미완성 메서드 때문에 객체를 직접 생성할 수 없다.
힙 메모리에 생성되는 객체는 내부 요소가 미완성인 상태로 들어갈 수 없기 때문이다.
하지만 이 추상 클래스를 상속한 자식 클래스를 생성하면 그 자식 클래스로는 객체를 생성할 수 있다.
추상 클래스를 상속하는 자식 클래스는 부모에게 상속받은 미완성 메서드(추상 메서드)를 반드시 오버라이딩 해야 한다.
완성된 메서드이든, 미완성된 메서드이든 부모에서 상속받은 메서드를 자식에서 재정의 하는 것을 오버라이딩이라 하는데, 이 중 부모에게 물려받은 미완성 메서드를 자식 클래스에서 완성하는 것을 '구현한다' 라고 한다.
객체 생성 방법
1. 추상 클래스를 일반 클래스로 상속해 객체 생성
2. 익명 이너 클래스 사용
abstract class A{
abstract void abc();
}
class B extends A{
void abc(){
System.out.println("방법1- 자식 클래스 생성 및 추상 메서드 구현");
}
}
public class Main{
public static void main(String[] args){
A b1 = new B();
b1.abc();
A a1 = new A(){
void abc(){
System.out.println("방법2- 익명 이너 클래스 방법으로 객체 생성");
}
};
a1.abc();
}
}
'BACK > JAVA' 카테고리의 다른 글
[JAVA] 쓰레드의 속성 (0) | 2022.08.09 |
---|---|
[JAVA] 쓰레드 생성 및 실행(Thread클래스, Runnable 인터페이스) (0) | 2022.08.08 |
[JAVA] 예외 : Checked Exception / UncheckedException (0) | 2022.08.01 |
[JAVA] 이너 클래스(인스턴스, 정적, 지역) (0) | 2022.07.28 |
[JAVA] 이너 인터페이스 (0) | 2022.07.28 |