1 분 소요

추상 클래스의 정의

추상 메서드

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

abstract void abc(); // 메서드의 본체({})가 없고 세미콜론(;)으로 끝남.

추상 클래스

추상 메서드를 1개 이상 포함하고 있는 클래스는 반드시 추상클래스로 정의돼야 한다. 추상 메서드 구분과 비슷하게 class 키워드 앞에 abstract를 붙여 표현한다.

abstract class 클래스명 {
    
}

추상 클래스의 특징

추상 클래스는 내부의 미완성 메서드 때문에 객체를 직접 생성할 수 없다.
힘 메모리에 생성되는 객체는 내부 요소가 미완성된 상태로 들어갈 수 없기 때문이다.

추상 클래스로는 직접 생성할 수 없지만 이 추상 클래스를 상속한 자식 클래스를 생성하면 그 자식 클래스로는 객체를 생성할 수 있다.

추상 클래스를 상속하는 자식 클래스는 부모에게 상속받은 미완성 메서드를 반드시 완성해야 한다.

오버라이딩(overriding)

부모에게 상속받은 메서드를 자식 클래스에서 재정의 하는것

구현한다(implements)

부모에게 물려받은 미완성 메서드를 자식 클래스에서 완성하는것

추상 클래스 타입의 객체 생성 방법

일반 클래스를 생성

A a = new B();

익명 이너 클래스를 사용

A a = new A() {
    @Override
        void abc() {
            System.out.println("hi");
        }
    };

이떄 A() 는 클래스 A의 생성자를 호출하는 것이 아니라 컴파일러가 클래스 A를 상속받아 abc() 메서드를 오버라이딩한 익명 클래스의 생성자를 호출한다는 것을 의미한다.

객체를 여러개 만들어야 하는 상황이라면 자식 클래스를 직접 정의하는 첫번째 방법이 적절하다. 하지만 딱 한 번만 만들어 사용할 객체일 때는 익명 이너 클래스를 활용하는 것이 훨씬 간결한 코드를 작성하는데 도움이 된다.

참조

Do it! 자바 완전 정복

댓글남기기