using System;
class BaseClass
{
public string name;
public BaseClass()
{
this.name = "MyName";
}
public virtual void A()
{
Console.WriteLine(this.surname); // error. BaseClass does not definition of surname
}
}
class DerivedClass : BaseClass
{
public string surname;
public DerivedClass()
{
this.surname = "MySurname";
}
}
namespace HelloWorld
{
class Program
{
static void Main(string[] args)
{
DerivedClass dc = new DerivedClass();
dc.A();
Console.ReadKey();
}
}
}
Кто-нибудь может мне это объяснить? Я знаю, что BaseClass
не содержит определения surname
, но я вызываю A()
метод из DerivedClass
объекта (this.surname
- this
является объектом DerivedClass
). DerivedClass
объект содержит информацию о name
и surname
! Почему невозможно получить доступ к surname
из метода A()
? Это очень интересно для меня, потому что в Python эта модель работает отлично. Код ниже.
class BaseClass:
def __init__(self):
self.name = 'MyName'
def a(self):
print(self.surname)
class DerivedClass(BaseClass):
def __init__(self):
super().__init__()
self.surname = 'MySurname'
if __name__ == '__main__':
dc = DerivedClass()
dc.a()
Извините за мой плохой английский.