一道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不是只有包的访问权限么?
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不是只有包的访问权限么?
A我也有疑问,MARK下
默认的就是friendly.
A不对是因为class B前面不是public,而是默认,所以也是friendly.
你把你那代码贴出来,应该是不行的.因为不是protected.
java中常见的有public,protected,private 和 package
friendly在java中很少用吧。C++里面是有这个关键字的
比如B如果是public的,则默认构造方法是public的。
如果B是默认的访问权限,则构造方法相同。
当B是内部类是,前面也可以有protected,private等,默认添加的构造方法仍然和类的修饰符一致。这个在java语言规范中都有规定的。
当然要选择最好的
有点点疑问当然不能够选
但是bd是明显正确的
所以选择bd