0

我想知道使用“this”作为参数来初始化子类是个好主意吗?如果我想问得更好,我应该问,在 OOP 世界中,从子类访问父类变量是否是个好主意?

谢谢

4

3 回答 3

2

您似乎打算做这样的事情:

public class MyClass
{
    private OtherClass _someProperty;
    public OtherClass SomeProperty 
    {
        get
        { 
             if (this._someProperty == null) this._someProperty = new OtherClass(this);
             return this._someProperty;
        }
    }
}

public class OtherClass
{
    private MyClass _parent;
    public OtherClass(MyClass parent)
    {
        this._parent = parent;
    }
}

这是相当标准的 OOP 方法。对于更高级的场景,您应该记住的一件事是,现在您在这两个对象之间有一个循环引用,并且垃圾收集器将无法在其中一个对象仍然被引用时收集它们中的任何一个。

于 2013-05-02T09:07:13.590 回答
1

在 OOP 世界中,从子类访问父类变量是个好主意吗?

这不是一个想法,这实际上就像OOP作品。

您声明类,从它派生类,从类中您可以访问父类的public,protectedinternal(如果类和类在同一个程序集中)成员。

OOP 设计的卓越之处。

如果您要问其他问题,请澄清。

于 2013-05-02T08:58:52.473 回答
0

根据子类的定义:

子类是从另一个派生的类,现在将成为它的父类。

听起来您的代码看起来像这样:

class Parent {}
class Child : Parent {
    Parent m_parent;
    Child(Parent parent){m_parent=parent;}
}

这里不需要存储父类的引用;子类已经可以访问其成员变量。它甚至可以base在有歧义时使用。

因此,使用this作为参数来初始化一个子类,让它访问它的父类,并不是一个好主意。

于 2013-05-02T09:11:54.340 回答