2009-02-01 4 views
4

멍청한 질문..net의 기존 기본 객체에서 파생 된 객체 만들기

사람들 필드가 모두 데이터로 채워져 있고 사람 클래스에서 파생 된 직원 유형이 있고 직원과 관련된 추가 필드가 있다고 가정 해 보겠습니다. 특정 기존 인물 객체에 대한 직원 객체를 얻으려면 어떻게해야합니까? 즉, 사람 개체를 직원에게 어떻게 전달합니까? 사람이 직원으로 만든 경우

+0

왜 대답이 경우입니까? 저는 왜 사람을 직원에게 캐스팅 할 수 없는지 알지 못합니다. 기본 클래스 인 경우 모든 기본 클래스 필드가 있어야합니다. 나는 왜 이것이 할 수 없는지 명백한 뭔가를 놓치고 있습니까? – tim

답변

5

는, 그럼 그냥 캐스트 :

Person person = new Employee(); // for some reason 
... 
Employee emp = (Employee)person; 

사람이 단 한 사람의 경우 : 당신은 할 수 없습니다; 당신은 인격 캡슐화 직원을 가질 수 - 또는 할 수 있습니다 사본 분야 :

class Employee { // encapsulation 
    private readonly Person person; 
    public Person {get {return person;}} 
    public Employee(Person person) {this.person = person;} 
    public Employee() : this(new Person()) {} 
} 

또는

class Employee : Person { // inheritance 
    public Employee(Person person) : base(person) {} 
    public Employee() {} 
} 
class Person { 
    public Person(Person template) { 
     this.Name = template.Name; // etc 
    } 
    public Person() {} 
} 
+0

나는 많이 생각했다; 답변 해주셔서 감사합니다. –

관련 문제