日期:2014-05-20 浏览次数:20840 次
superclass(int n) { System.out.println("superclass int n"); }
------解决方案--------------------
你如果去掉父类的无参构造器。
你的子类有参函数
subclass(int n)
{
System.out.println("subclass int n");
}
在这里没有指明构造函数,就会使用默认构造函数(即无参构造器),虽然你没用这个构造函数实例化子类对象,你也给父类提供了有参构造函数用于实例化。不过在编译的时候,我估计处于安全考虑,编译程序会排查每个子类的构造函数是否隐式或显示调用的父类构造函数。
------解决方案--------------------
如果没有构造方法,虚拟机会默认一个无参构造方法
如果有构造方法,无论是有参的还是无参的,就不会有默认的无参构造方法
在这里你重写了父类的有参构造方法,却又调用父类的有参构造方法,所以报错
lz可以讲子类的有参构造方法去掉,或者将super(100);改成new subclass(100);
------解决方案--------------------
如果没有无参数构造器,子类必须显示的调用一个带参数的构造器。