추상 클래스를 인스턴스화 할 수 없으므로 추상 클래스 내에서 생성자가 여전히 허용되는 이유는 무엇입니까?추상 클래스 및 생성자
public abstract class SomeClass
{
private string _label;
public SomeClass(string label)
{
_label=label;
}
}
추상 클래스를 인스턴스화 할 수 없으므로 추상 클래스 내에서 생성자가 여전히 허용되는 이유는 무엇입니까?추상 클래스 및 생성자
public abstract class SomeClass
{
private string _label;
public SomeClass(string label)
{
_label=label;
}
}
파생 클래스의 생성자는 여전히 추상 클래스의 생성자를 호출해야합니다. 생성자를 전혀 지정하지 않으면 모든 파생 클래스는 컴파일러에서 제공 한 기본 매개 변수가없는 클래스를 사용해야합니다.
"public"은이 경우 "protected"와 실제로 동일합니다.
여전히 다음을 수행 할 수 있기 때문에 : 당신이 볼 수 있듯이
public class SomeChildClass : SomeClass
{
public SomeChildClass(string label) : base(label){ }
public string GetLabel() { return _label; }
}
, 자식 클래스 자체의 인스턴스를 생성 (추상 클래스)의 기본 생성자를 호출 할 수 있습니다.
존이 말한 것처럼 public
은 실제로 필요하지 않습니다. 실질적으로 protected
과 같습니다.
가능한 복제본 http://stackoverflow.com/questions/1682275/whats-the-utility-of-public-constructors-in-abstract-classes-in-c/1682284#1682284 –
중복되지 않음 - public 생성자의 사용은 생성자의 사용법을 묻습니다. – thecoop