首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

如何会编译不同过呢

2012-01-31 
怎么会编译不同过呢Java codeclass A{A(int i){System.out.println(i+i)}}public class Execise_6_8 e

怎么会编译不同过呢

Java code
class A{    A(int i)    {        System.out.println("i="+i);    }}public class Execise_6_8 extends A{    Execise_6_8()    {    }    Execise_6_8(int i)    {        super(i);    }    public static void main(String []args)    {        Execise_6_8 b=new Execise_6_8(5);    }}程序为什么会编译不通过呢:D:\my java>javac Execise_6_8.javaExecise_6_8.java:11: 找不到符号符号: 构造函数 A()位置: 类 A        {        ^1 错误不是当调用导出类的无参构造函数时才会首先调用基类的无参构造函数的吗,这里是直接调用的Execise_6_8(5)啊怎么会不通过呢


[解决办法]
Execise_6_8()
{
}

需要无参父类构造方法
[解决办法]
程序编译的时候Execise_6_8的无参构造方法运行完理论上需要调动父类的构造方法,当没有显示申明调用父类构造方法的时候程序默认调用父类的无参构造方法,而此时的A类没有无参构造方法,所以就出错了。
Java code
    Execise_6_8() {        super(5);    }
[解决办法]
在A类加上空的构造方法,或者把Execise_6_8的空的构造方法去掉就行了。

热点排行
Bad Request.