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을 거는거냐