如何从基类中获取属性值?

时间:2013-01-21 16:08:49

标签: c#

我需要获取对象实例的基类中的属性值,而不设置子类属性以从父级中检索它,可能吗?

enter image description here

3 个答案:

答案 0 :(得分:4)

我认为你可能在这里误解了继承。请允许我解释一下。如果您已经知道这一点,请提前道歉 - 如果是这种情况,那么您的问题可能会使用一些澄清,因为这听起来像是您所要求的。如果您有一个继承自某个基类的派生类,那么该派生类具有基类所具有的所有相同属性。例如:

public class Square
{
    public int xSize { get; set; }
}

public class Rectangle : Square
{
    public int ySize { get; set; }
}

如果您声明Rectangle rect = new Rectangle(),则可以访问rect.xSizerect.ySize。唯一一次你无法做到这一点的是xSize是私有的。仅仅因为它从Square类获得xSize并不意味着它必须从父类中获取它;它有自己的。这里的术语使用像“父母”和“继承”这样的词是有原因的 - 如果有人说你有你父亲的眼睛,那并不意味着你真的在用他的眼睛;这意味着它们是相同的,因为你从他那里继承了它们。它在这里是相同的 - 派生类不从父类借用属性;它只具有基类所具有的所有属性,以及你给它的任何额外属性。

答案 1 :(得分:2)

假设你有两个看起来像这样的类:

public class Parent 
{ 
  public int Age { get; set; }
}

public class Child : Parent 
{
  // This will get the 'base' class property
  public int AgePlusFive { get { return base.Age + 5; } }
}

...稍后你想从Child类中获取Age属性的其他地方,所以你说:

Child child = new Child();
int age = child.Age;
int agePlusFive = child.AgePlusFive;

答案 2 :(得分:0)

我知道这很旧,但是您可以执行以下操作。如果我知道其他类将依赖于公共值,例如来自重要类的会计数据,那么我只需将属性设置为静态,然后从何处调用它就无关紧要(请参见下文)。否则,只需将要共享的值传递给子构造函数即可。

.llama

然后,您可以从静态void主程序中这样调用它:

llama

注意:您仍可以为孩子的AgePlusFive获取使用base.Age,但是您必须向Parent添加一个方法来返回Age。