클래스 A는 추상 클래스이며 상속 된 클래스 B가 제공해야하는 읽기 전용 속성을 정의한다고 가정 해 보겠습니다. 이 추상적으로 설정하거나 보호 등의 속성을 정의하는 좋은 연습은 다음과 같습니다읽기 전용 속성 상속 : 추상 또는 설정 보호
public abstract class A
{
public abstract int Value { get; }
}
public class B : A
{
public override int Value { get { return 1; } }
}
또는
public abstract class A
{
public int Value { get; protected set; }
}
public class B : A
{
public B()
{
Value = 1;
}
}
내가 처음 솔루션은 아마 더 낫다고 생각하지만 난 다른 의견을 듣고 싶습니다.
나는 좋은 점을 가지고 있고 아무도 기여하지 않았기 때문에 대답을 받아 들일 것입니다. 그러나 그 동안 나는 솔루션 1을 사용하여 끝났습니다. 솔루션 2를 사용하여 다음을 고려하십시오. 세 번째 클래스 C가 B에서 상속 받고 해당 값을 노출하려고합니다. 또한 값은 일정하지 않지만 B와 C의 많은 메소드에서 설정됩니다. C가 제공해야하는 메소드 대신 메소드 중 하나를 실행하는 동안 B가 값을 제공 할 수 있습니다. 즉, C가 해당 속성을 올바르게 재정의하지 못합니다. 그래서 나는 해결책 1이 일반적으로 더 적절하다고 결론을 내렸다. – Zmaster