我想知道使用“this”作为初始化子类的参数是个好主意?如果我想更好地问它,我应该问一下,在OOP世界中,从子类访问父类变量是个好主意吗?
由于
答案 0 :(得分: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方法。对于更高级的方案,您应该记住的一件事是,现在您在这两个对象之间有一个循环引用,并且垃圾收集器在仍然引用它们时将无法收集它们中的任何一个。
答案 1 :(得分:1)
在OOP世界中,从子级访问父类变量是个好主意 或不上课?
这不是一个想法,这就像OOP
实际工作一样。
您声明父类,从 child 类派生,从 child 类,您可以访问父级public
,{{ 1}}和protected
(如果 child 和 parent 在同一个程序集中)成员。
这是 OOP设计的优点。
如果你问其他问题,请澄清。
答案 2 :(得分:0)
根据子类的定义:
子类是从另一个派生的类,现在将成为它的父类。
听起来你的代码看起来像这样:
class Parent {}
class Child : Parent {
Parent m_parent;
Child(Parent parent){m_parent=parent;}
}
此处不需要存储父类的引用;子类已经可以访问其成员变量。当有歧义时,它甚至可以使用base
。
因此,使用this
作为参数来初始化子类,使其具有对其父类的访问权,不是一个好主意。