设置值';s(继承)
本文关键字:继承 设置 | 更新日期: 2023-09-27 18:29:25
我在设置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
。因为computer
和laptop
是两个不同的对象。Laptop是继承的,但这并不意味着您可以使用laptop
对象访问computer
对象。
使用laptop.ChangeName(name);
。打印laptop.name
,您将获得您设置的name
。