设置超类的值(继承)

时间:2013-08-28 15:12:37

标签: c# winforms inheritance

我在设置SuperClass的变量时遇到了一些麻烦

我有以下课程:

  •       
      计算机(超类)
        
  •     
  •        
      笔记本电脑(子类)
        
  •     
  •        
      桌面(子类)
        
  • 在SupperClass Computer中,我有一个变量string name;

    public class Computer
        {
            protected string name;
        }
    

    当我从笔记本电脑类调用方法ChangeName(string yourName)时,它应该在SuperClass name中设置变量Computer,如下所示:

    public class Laptop : Computer
    {
        public void ChangeName(string yourName)
        {
            name = yourName;
        }
    }
    

    当我尝试从超类Computer获取带有属性的名称时,它返回Null。 我进行了调试以查看发生了什么,并且SubClass Laptop实际上更改了SuperClass中的名称,但是当方法ChangeName结束编译时,它又恢复为null

    导致这种情况的原因是什么?

    1 个答案:

    答案 0 :(得分:1)

    我认为你正在设置像

    这样的变量

    laptop.ChangeName(name);

    并试图获得像

    这样的名字

    computer.name

    您误解继承

    显然那将是null。因为computerlaptop是两个不同的对象。笔记本电脑是继承的,但并不意味着您可以使用computer对象访问laptop对象。

    使用laptop.ChangeName(name);设置值后。打印laptop.name,您将获得已设置的name