我有类似
的类结构abstract class Animal {
public Animal(){
//init stuff..
}
}
class Cat : Animal {
public Cat(bool is_keyboard) : base() //NOTE here
{
//other init stuff
}
}
现在,看看注意到的那一行。如果删除: base()
,它将编译而不会出现错误。
这是为什么?有没有办法禁用这种行为?
答案 0 :(得分:7)
如果您不添加任何其他内容(任何: base()
或: base(...)
),则会隐含: this(...)
。要强制它显式,请将参数添加到基础构造函数。然后它不能隐含。
例如:
public Animal(string name) {...}
答案 1 :(得分:1)
如果某个类不包含实例 构造函数声明,默认值 实例构造函数是自动的 提供。 2那个默认构造函数 只需调用无参数 直接基类的构造函数。 3如果直接基类没有 有一个无障碍参数 实例构造函数,编译时 发生错误。 4如果上课 抽象然后声明 默认的可访问性 构造函数受到保护。 5否则, 声明的可访问性 默认构造函数是public
答案 2 :(得分:0)