BACK/JAVA

[JAVA] 추상 클래스 (특징, 객체 생성 방법)

연듀 2022. 8. 4. 09:46

 

 

추상 클래스의 정의

 

일단 추상 메서드는 메서드의 본체가 완성되지 않은 미완성 메서드를 말한다.

 

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();
    }
}