2010-03-22 3 views

답변

12

예, 기본 클래스는 매개 변수화 된 생성자를 허용 할 수 있습니다. 이것은 단순히 상속받은 모든 클래스가 기본 생성자에 값을 제공해야한다는 요구 사항을 부과합니다.

+0

와우, 빠른 응답. 이제 코딩을 계속할 수 있습니다. –

1

신뢰할 만합니다. 필요 또는 유용 여부는 전적으로 클래스의 디자인에 달려 있습니다.

+0

위의 4 가지가 확실하게 1보다 우수합니다. –

2

대부분의 경우 파생 클래스에는 매개 변수화 된 생성자가 있습니다. 그래서 그 생성자가 호출 될 때 그들은 여전히 ​​매개 변수가없는 기본 생성자를 호출 할 수 있습니다 : 당신이 하나를 추가를 필요로하는 경우

public employee(int age) : base(this) 

대답은, 즉 아무 문제가 없다. 전화 번호 또는 전자 메일 주소를 말하기 위해 몇 가지 유효성 검사가 필요한 비즈니스 개체 기본 클래스를 생각해보십시오. 파생 클래스가 이러한 비즈니스 규칙을로드하도록 보장하려고합니다. 기본 클래스 생성자가 없으면이 규칙을 파생 클래스 객체에 추가 할 수 없습니다.

2

개체를 사용할 수 없거나이 클래스의 모든 메서드에 대한 종속성이있는 것이 좋습니다. 예를 들어, 모든 함수에서 동일한 매개 변수를 가진 클래스가있는 경우 생성자에서이를 설정하는 것이 좋을 것이므로 함수 서명이 더 작습니다.

+1

상속 계층 구조를 통해 상속 될 속성에 생성자 매개 변수를 할당하는 것이 목적입니다. 파생 된 모든 클래스는이 속성에 의존 할 것으로 예상됩니다. 최소한이 객체에 대한 의존성이 있음을 선언하고자합니다. –

2

첫 번째 예제에서 기본 클래스의 작성자는 공개 생성자가 노출되지 않도록합니다. 아마도 기본 클래스는 생성자에서 특별한 것을 필요로하지 않을 것이지만, 아무 것도 쓰지 않으면 컴파일러는 기본 (매개 변수없는) 생성자를 추가합니다.

아니요. 특별히 유용하다고 생각하지 않습니다. 어쨌든 추상 클래스를 인스턴스화 할 수 없습니다.

1

예, 완벽하게 수용 할 수있는 디자인 결정입니다. 기본 클래스에 대한 의미 만 이해해야합니다. 아마도 매개 변수에서 자체 멤버를 초기화해야합니다. 또한 파생 클래스에 제약을가합니다. 리터럴을 전달하거나 클라이언트 또는 파생 클래스에 유사한 제한을 적용해야합니다.