Sim*_*ons -1 .net c# oop inheritance derived-class
我有父类:
class clsTestParent
{
protected int x;
public void Foo()
{
x = 10;
}
}
Run Code Online (Sandbox Code Playgroud)
我有Derrived Class如下:
class clsDerivedTest : clsTestParent
{
x = 10;
Foo();
}
Run Code Online (Sandbox Code Playgroud)
但这不起作用,因为我遇到两个错误:
类,结构或接口成员声明中的标记'='无效
方法必须具有返回类型
但是当我尝试将它们与派生类中的方法一起使用时,上述语句工作正常,如下所示:
class clsDerivedTest : clsTestParent
{
public void myTestMethod()
{
x = 10;
Foo();
}
}
Run Code Online (Sandbox Code Playgroud)
为什么受保护的var或方法只能通过使用派生类方法访问,但不能在类中直接访问.
我甚至尝试通过创建对象来访问受保护的成员,如下所示:
clsDerivedTest objDerivedTest = new clsDerivedTest();
objDerivedTest.x = 10;
Run Code Online (Sandbox Code Playgroud)
但是再次获得保护级别的错误.我有var作为保护,所以为什么派生类的对象不能访问它?
我需要清除OOP的基本原理,但要坚持到这里.
好吧,除了初始化之外,方法体是唯一可以执行代码的地方.您的语句x = 10;是一个赋值表达式,应该放在方法体中.
所以,这将在类级别工作:
int x = 10;
Run Code Online (Sandbox Code Playgroud)
因为它是一个字段声明加上初始化器.但是一个简单的赋值语句不起作用.可以这样想:如果你放在x = 10;班级中间,在每个方法之外,什么时候会运行?没有办法"调用"它.
如果您希望它在对象构造上运行,请为它创建一个方法或将您的赋值放在类构造函数中.