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

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

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으로 초기화됩니다.

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

ᕕ( ᐛ )ᕗ
로그인이 필요합니다

작성한 답변에 다른 개발자들이 댓글을 작성하거나 댓글에 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.