추상클래스도 생성자를 가질수 있나요?


추상 클래스도 생성자를 가질수 있나요? 만약 가질 수 있으면 어떻게 쓰고 왜 사용하는거죠?

  • 2016년 01월 12일에 작성됨

조회수 520


1 답변


좋아요
0
싫어요
채택취소하기

네 추상클래스도 생성자를 가질수 있습니다 .

abstract class Product { 
    int multiplyBy;
    public Product( int multiplyBy ) {
        this.multiplyBy = multiplyBy;
    }

    public int mutiply(int val) {
       return multiplyBy * val;
    }
}

class TimesTwo extends Product {
    public TimesTwo() {
        super(2);
    }
}

class TimesWhat extends Product {
    public TimesWhat(int what) {
        super(what);
    }
}

상위 클래스인 Product는 추상클래스이고 생성자도 있습니다. 그리고 Product를 상속받는 TimesTwo 클래스는 생성자를 가졌는데 여기서 super(2); 호출합니다. 그럼 상속받은 Product의 생성자로 넘어가서 multiplyBy에 2를 대입해줍니다. 마찬가지로 Product를 상속받은 TimesWhat에서도 생성자에서 상위클래스의 생성자를 호출하는데 똑같이 Product의 생성자에 what을 전달해 multiplyBy는 what으로 초기화됩니다.

보통 추상클래스의 생성자는 클래스에 필요한 어떤 제약을 줄 때 사용합니다.

  • 2016년 01월 12일에 작성됨

로그인이 필요한 기능입니다.

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 작성한 답변에 다른 개발자들이 댓글을 작성하거나 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.
► 로그인
► 계정만들기
Close