A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© DH柯 中级黑马   /  2015-1-9 23:49  /  962 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

父类如果为没有带参数的构造器,子类必须显示带其他超类构造器:(求理睬)代码:
    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);
    }
}

2 个回复

倒序浏览
所以,通常来说,当你自定义了构造函数后,一般要再写一个无参数的构造函数。后期有很多框架在使用时,都是通过反射来调用类的无参数构造函数的,如果没有,会出现问题!!!
回复 使用道具 举报
谢谢提醒哦!!!!!!!!!!!!!!!!!!!!!!!!!!!!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马