abstract
클래스의 생성자를 직접 호출하여 개체를 만들 수 없습니다. abstract
클래스의 생성자는 파생 클래스에서만 호출 할 수 있습니다. 그러므로 이 인 것처럼 보입니다. 추상 클래스의 생성자는 protected
이거나 package-private이어야합니다 (패키지 내의 파생 클래스에 생성자 사용을 제한하는 예외적 인 경우는 후자). 그러나 자바는 abstract
클래스의 생성자가 public
이되도록 허용합니다.추상 클래스의 public 생성자에 대한 좋은 이유가 있습니까
는 유용이 public
보다는 protected
또는 패키지 - 개인이 될하는 abstract
클래스의 생성자를 선언하는 것입니다있는 어떤 상황이 있습니까?
이것은 "Abstract class constructor access modifier"질문의 꽤 중복되지 않습니다 : 명확하게 public
을 할 생성자를 선언 할 수 있습니다; 나는 어떤 좋은 좋은 이유가 있는지 알고 싶습니다. 거기에는없는 것처럼 보입니다. 나는 그것이 C# has a similar peculiarity임을 안다.
생성자는 개체의 "생성"과 아무 관련이 없습니다. 이것은 객체를 "생성"하는 동안 호출되는 메서드 일뿐입니다. 따라서 Abstract 클래스는 Abstract 클래스의 인스턴스를 생성하는 동안 (Subclass를 통해) 호출되는 public 생성자를 가질 수 있으며, 생성자 메소드에서는 멤버 변수를 초기화하는 코드를 작성합니다. http://stackoverflow.com/questions/260666/can-an-abstract-class-have-a-constructor?lq=1 –
생성자는 생성자 체인에서 사용할 수있는'private' 일 수도 있습니다. –