【发布时间】:2013-02-10 07:46:33
【问题描述】:
我想澄清我对 c# 中这个基本 OOPS 概念的理解。在大多数互联网站点上,我了解到派生类继承基类的私有成员,但它无法访问这些成员。
派生类可以访问公共的、受保护的、内部的和 受保护的基类的内部成员。即使一个派生的 类继承基类的私有成员,它不能访问 那些成员。但是,所有这些私人成员仍然存在于 派生类可以做与基类相同的工作 类本身。例如,假设一个受保护的基类方法 访问私有字段。该字段必须存在于派生的 类,以便继承的基类方法正常工作。
来源:http://msdn.microsoft.com/en-us/library/ms173149.aspx
我的问题是,如果我们认为上面是正确的,那么我们可以说“基类的构造函数是在派生类中继承的,但是派生类只能通过自己的构造函数使用base关键字访问/调用它和this在创建派生类的实例时,构造函数对外部世界不可用"。
public class Employee
{
public int salary;
public Employee(int annualSalary)
{
salary = annualSalary;
}
}
public class Manager : Employee
{
public Manager(int annualSalary)
: base(annualSalary)
{
//Add further instructions here.
}
}
因为要调用基类构造函数,它应该存在于该类内部。也许我的解释是错误的。谁能解释一下?
提前致谢!
【问题讨论】:
-
“派生类可以访问基类的 ... 内部 ... 成员”:只有当两者都在同一个程序集中时,这才是正确的。
-
问题/问题到底是什么?我的意思是,您知道如何调用基本构造函数以及如何初始化类。那么,如果基本构造函数实际上“存在”,为什么这很重要?
-
您是在问是否可以通过调用基类构造函数来创建派生类对象?
-
我认为他希望子类默认调用具有相同签名的基类构造函数,而不是无参数构造函数。但是层次结构可能非常深,您的程序无法确定您是否真的按 'int' 在这种情况下使用与基类中相同的东西。
-
我知道如何调用构造函数以及它是如何工作的。只是想知道我们是否可以说“基类的构造函数也被继承”......在一次采访中,面试官问我私有成员是否被继承,我说是的,因为我在MSDN上看到过。但后来他问我,同理,构造函数也应该被继承。我没有答案,因为自从进入软件领域以来,我被告知构造函数和析构函数永远不会在派生类中继承!
标签: c# oop inheritance constructor