当前位置: 技术问答>java相关
private 构造器
来源: 互联网 发布时间:2017-04-14
本文导语: class A {private A(){System.out.println("a!");}} class B extends A{} 我靠,没错!B实例的时候会主动调用父类A的构造,即使是private的,看来也没问题 不知道我在什么地方看到上面这一句话。我编译了一下,跟本就编译不成功 ...
class A {private A(){System.out.println("a!");}}
class B extends A{}
我靠,没错!B实例的时候会主动调用父类A的构造,即使是private的,看来也没问题
不知道我在什么地方看到上面这一句话。我编译了一下,跟本就编译不成功
class B extends A{}
我靠,没错!B实例的时候会主动调用父类A的构造,即使是private的,看来也没问题
不知道我在什么地方看到上面这一句话。我编译了一下,跟本就编译不成功
|
你也知那是private啦!只给类本身与它的内部类用,子类当然不能调用喽!
|
有几点可以明确:
1 构造器是不能继承的;
2 如果本类没有显式构造器,就会调用default的构造器,如B();
3 构造器的第一行用于调用本类或父类的构造器,如没有,则调用父类的default构造器,如A()。
这里因为A()声明为private,所以会产生编译错误,在B类中应该避免调用到A()。楼主看的是哪本书?误人子弟!
1 构造器是不能继承的;
2 如果本类没有显式构造器,就会调用default的构造器,如B();
3 构造器的第一行用于调用本类或父类的构造器,如没有,则调用父类的default构造器,如A()。
这里因为A()声明为private,所以会产生编译错误,在B类中应该避免调用到A()。楼主看的是哪本书?误人子弟!
|
不会吧,我编译是通不过的,源程序如下:
class A {
private A(){
System.out.println("a");
}
}
public class B extends A{
public static void main(String[] args){
B b = new B();
}
}
编译提示错误为:
E:>javac B.java
B.java:7: A() has private access in A
public class B extends A{
^
1 error
wdman(天空) 和 peacock_king(孔雀王) 说得对,
class A {
private A(){
System.out.println("a");
}
}
public class B extends A{
public static void main(String[] args){
B b = new B();
}
}
编译提示错误为:
E:>javac B.java
B.java:7: A() has private access in A
public class B extends A{
^
1 error
wdman(天空) 和 peacock_king(孔雀王) 说得对,
|
不知道
:(
:(
|
上面并不是完成的代码,B中需要补充必须的内容(比如它自己的构造器)
|
子类不能用父类的private方法,只能是public和protected
|
"The default constructor invokes the no-parameter constructor of the superclass."