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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

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

给定如下一个Java源文件Child.java,编译并运行Child.java,以下结果正确的是()。
class Parent1 {
    Parent1(String s){
        System.out.println(s);
    }
}
class Parent2  extends Parent1{
    Parent2(){
   //super();  
System.out.println("parent2");
    }
}
public class Child extends Parent2 {
    public static void main(String[] args) {
        Child child = new Child();
    }
}
        A.        编译错误:没有找到构造器Child()
        B.        编译错误:没有找到构造器Parent1()
        C 确运行 ,没有输出值
         D.正确运行,输出结果为:parent2

1 个回复

倒序浏览
B,
  当你没有定义自己的构造函数的时候, 类中有一个合成的无参数的默认构造函数, 但是当你自己定义了构造函数之后, 这个系统合成的无参数的默认构造函数就不存在了, 因为编译器只有在发现类不包含任何构造函数的情况下才会替我们生成一个默认的构造函数, 一旦我们定义了一些其他的构造函数, 那么除非我们再定义一个默认的构造函数, 否则没有构造函数, 这条规则的依据是: 如果一个类在某种情况下需要控制对象的初始化, 那么该类很可能在所有情况下都需要控制;
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马