黑马程序员技术交流社区

标题: 父类与子类构造器注意点 [打印本页]

作者: DH柯    时间: 2015-1-9 23:49
标题: 父类与子类构造器注意点
父类如果为没有带参数的构造器,子类必须显示带其他超类构造器:(求理睬)代码:
    Base(){
        System.out.println("Base with no arg");
    }
}

class Test extends Base{
    Test(int v){
    }

    public static void main(String[] args) {
        Test a = new Test(3);  
    }
}
//输出
Base with no arg
//这里子类里面没有显式调用父类的构造函数,但是父类的构造还是被调用了,说明Java加载类的时候,会加载父类的无参数的构造函数


class Base{
    Base(int val){
        System.out.println("Base int");
    }
}

class Test extends Base{
    Test(int v){
     //如果这里不调用super(v) 是无法通过编译的
    }

    public static void main(String[] args) {
        Test a = new Test(3);
    }
}

作者: jojo    时间: 2015-1-10 00:50
所以,通常来说,当你自定义了构造函数后,一般要再写一个无参数的构造函数。后期有很多框架在使用时,都是通过反射来调用类的无参数构造函数的,如果没有,会出现问题!!!
作者: DH柯    时间: 2015-1-10 08:11
谢谢提醒哦!!!!!!!!!!!!!!!!!!!!!!!!!!!!





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2