设置超类的值(继承)



我在设置SuperClass 的变量时遇到了一些问题

我有以下课程:

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

    public class Computer
        {
            protected string name;
        }
    

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

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

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

    是什么原因造成的?

    我认为您正在设置类似的变量

    laptop.ChangeName(name);

    并试图获得类似的名称

    computer.name

    您误解了继承

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

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

    最新更新