调用第二级基类构造函数

jbk*_*kkd 2 c# oop inheritance encapsulation

在C#中,我有一个类,foo它继承自类bar,而类继承自类foobar.

foo构造函数中,我想foobar直接调用构造函数,而不是调用bar构造函数.我试过这样的事情:

 public foo(int i): base : base(i)
Run Code Online (Sandbox Code Playgroud)

显然这不起作用.如果不通过bar构造函数,你将如何使它工作?

Joh*_*hnB 12

你不能,因为你不能跳过bar的初始化.你必须在bar中创建一个构造函数来传递你的参数.原因在于决定如何构建基类是有责任的.(基类的构造是bar 实现的一部分,面向对象的原则之一是封装 - 将实现隐藏到外部.)

  • **+ 1**_it的职责是决定如何构建它的基类._ (3认同)