public abstract class AnimalBrain
{
}
public class HumanBrain : AnimalBrain
{
}
public class DogBrain : AnimalBrain
{
}
public abstract class Animal
{
public AnimalBrain Brain { get; set; }
}
public class Human : Animal
{
public new HumanBrain Brain { get => (HumanBrain) base.Brain; set => base.Brain = value; }
}
36번째 행이 문젠대
이게 오류터지면 정작 사용하는 42번째 행에서 InvalidCast가 뜸
저렇게 위험한 속성이면 Animal.Brain에 protected set거는게 정상이지
애초에 콘크리트 타입으로 다운캐스팅해서 대입하는거 아니면 터지는 구조인데 뭐하러 public을 거는거냐
그래서 그걸 막는게 protected set입니다만?
그래서 열어둔 결과 형안정성 없는거 ㅇㅈ?
Animal.Brain은 public set인데도 아무거나 집어넣으면 안되고 이게 무슨 객체인지 하나하나 신경써줘야 하는거 ㅇㅈ?
실수로 집어넣어도 거기가 문제인지 안쪽 소스 보고 대입하는 부분 찾아야 겨우 찾는거 ㅇㅈ?