2014-02-19 6 views
-1

내 응용 프로그램에서 동일한 클래스의 여러 인스턴스를 만들어야합니다. 이 클래스에서는 다른 클래스의 속성에 액세스해야하며 모든 클래스의 속성을 구성 할 때 실제로 속성을 푸시하고 싶지 않습니다.상속이 값과 함께 작동하지 않는 이유는 무엇입니까?

그래서이 클래스는 필요한 모든 속성을 가진 부모로부터 상속받을 수 있다고 생각했습니다. 예를 들어

: 그 코드

// This class is called only once at the start of my app 
class Parent 
{ 
    int Property1 = 0; 

    public Parent(int val) 
    { 
     this.Property1 = val; 
    } 
} 


class Child : Parent 
{ 
    public Child() 
    { 
    } 

    public void PrintProp() 
    { 
     // Will always print the value of Parent's Property1 which has been defined only once 
     Console.WriteLine(Property1); 
    } 
} 

문제마다 나는 새로운 아이(), 속성 1의 값이 0이 아닌 내 프로그램 시작시를 보낸 값을 정의하는 것입니다.

어떻게하면됩니까?

+2

'부모'는 일종의 구성을 유지해야하는 것처럼 들립니다. 그렇다면 모든 자식 생성시 해당 유형의 인스턴스를 전달하십시오. 상속은 여기 당신을 도울 수 없습니다. – poke

+0

은 모든 인스턴스에 대해 global이거나 각 객체에 대해 인스턴스화 된 property1입니다. – BlackICE

+0

'자식'은 부모가 부모인지 어떻게 알 수 있습니까? –

답변

4

객체 지향 프로그래밍 언어에서의 상속은 을 유지하는 클래스의 연결에 대한 메커니즘으로 관계입니다. 1

Eiffel 프로그래밍 언어 작성자의 관점에서 보면 this article을 참조하십시오.

자세한 내용은 this wikipedia article도 참조하십시오. (현재 문서의 소스가 부족하다는 점을 지적하면서 좌절 할 것입니다.)

달성하려는 것은 글로벌 값 또는 인스턴스간에 값을 공유하는 것과 비슷합니다. Windows Presentation Framework에서이를 수행하는 메커니즘은 this article을 참조하십시오.

새 인스턴스가 다른 인스턴스와 동일한 값을 가지게하려면 해당 값을 복사하거나 하나의 인스턴스가 해당 값의 다른 인스턴스 객체를 가리 키도록해야합니다.

개체 지향적 인 방식으로 전역 값을 공유하려면 Singleton Pattern을 살펴보십시오.

+0

실제로 코드 재사용을 위해서만 상속을 사용하는 것은 대규모 프로젝트의 요요 방지 패턴으로 끝날 것입니다. 상속을 사용하는 주된 이유는 Dynamic binding과 Polymorphism입니다. –

관련 문제