一道SCJP题:class A {
 A() {}
}class B extends A {}
Which two statements are true? (Choose two)A. Class B's constructor is public.
B. Class B's constructor has no arguments.
C. Class B's constructor includes a call to this().
D. Class B's constructor includes a call to super(). 
答案是:BD我想问:
默认的构造函数是public还是friendly?为什么A不对?跟继承了A有关么?
我试了下,把以上class A跟class B放在一个包里,在另外个包里new B(),可以正常运行啊,如果是friendly不是只有包的访问权限么?

解决方案 »

  1.   

    BD对,我觉得没什么争议。
    A我也有疑问,MARK下
      

  2.   

    楼主学过C++?
    默认的就是friendly.
    A不对是因为class B前面不是public,而是默认,所以也是friendly.
    你把你那代码贴出来,应该是不行的.因为不是protected.
      

  3.   

    Java中没有friendly这个说法,好像可以叫package-private吧,不过你可以那么理解
      

  4.   

    构造函数默认的是public的
      java中常见的有public,protected,private 和 package 
      friendly在java中很少用吧。C++里面是有这个关键字的
      

  5.   

    跟继承没有关系,只跟当前类的修饰符有关。
    比如B如果是public的,则默认构造方法是public的。
    如果B是默认的访问权限,则构造方法相同。
    当B是内部类是,前面也可以有protected,private等,默认添加的构造方法仍然和类的修饰符一致。这个在java语言规范中都有规定的。
      

  6.   

    这个题只要两个答案
    当然要选择最好的
    有点点疑问当然不能够选
    但是bd是明显正确的
    所以选择bd