问题是没错的,就是问抽象类继承实体类。在继承类的情况下,子类是抽象类还是实体类没有什么区别,都需要父类有一个构造函数可供子类访问。其实后面那段话的意义不大,对所有类都通用。
为什么要有一个可供子类访问的构造函数呢?因为子类在实例化的时候,必定要调用一次父类的构造函数,假如你没在子类构造函数后面写base语句,那会默认调用父类的无参构造函数,像一楼那种情况,其实相当于这个
public class t { //若类未定义任何构造函数 系统会自动生成一个无参构造函数 public t() { } } public abstract class c : t { //若类未定义任何构造函数 系统会自动生成一个无参构造函数 public c():base()//未指定base的情况下 子类默认调用base() { } }
@林J: 感谢您的回答。我已经弄明白了,谢谢。
不知道,但楼上的代码给的不全.如下:
public class t
{
public t(){} //这就是明确的构造函数,你在编译器下试一下就知道呀
}
public abstract class c : t
{
}
这句话我觉得是有问题的,应该是实体类继承抽象类是否可行,答案是要看抽象类中有没有明确的构造函数,因为子类无法base上去了。应该是这样的