2014-02-19 60 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); 
    } 
} 

问题与该代码是,每次我定义了一个新的儿童(),Property1值是0,而不是我把它在我的程序启动时的值。

我该如何做到这一点?

+2

这听起来像'Parent'应该保持某种配置。如果是这样的话,只需在每个子项目中传递该类型的实例即可。继承不会对你有所帮助。 – poke

+0

是所有实例的全局属性1,还是每个实例化的对象都不同? – BlackICE

+0

“孩子”如何知道其父母是“父母”? –

回答

4

面向对象编程语言中的继承是一种关联类的机制,它保持了的关系。 1

请参阅this article了解Eiffel编程语言作者的观点。

另请参阅this wikipedia article了解更多详情。 (如果我注意到目前这个文档的源代码很差,我会忽略)。

看起来你正在努力实现的东西类似于全局值或跨实例的值共享。有关在Windows Presentation Framework中执行此操作的机制,请参阅this article

如果您希望新实例与另一个实例具有相同的值,则需要将这些值复制或将其一个实例指向另一个实例对象以获取其值。

为了以面向对象的方式共享全局值,请看看Singleton Pattern

+0

实际上,仅仅为了代码重用而使用继承是一种不好的做法,它将会在大型项目中以Yo-yo反模式结束!使用继承的主要原因是Dynamic binding和Polymorphism。 –