黑马程序员技术交流社区
标题:
看一下继承问题,有点不明白
[打印本页]
作者:
张涛的狂怒
时间:
2014-8-7 20:39
标题:
看一下继承问题,有点不明白
本帖最后由 张涛的狂怒 于 2014-8-8 06:11 编辑
class A{
private A(){}//改成A(int a){}还是报错
private int x=10;
protected int y=20;
void fun(){
System.out.println("y+x="+(y+x));
}
}
class C extends A{
private C(){}//为什么报错改成C(int a){}还是报错
void run()
{
y=y+1;
System.out.println("y="+y);
}
}
作者:
晋一峰
时间:
2014-8-7 20:59
父类的构造方法不能私有 这样就没法初始化父类数据了,改成public A()
作者:
cs8630323
时间:
2014-8-7 21:06
你把父类构造器私有了?
作者:
光头强
时间:
2014-8-7 21:09
大哥 构造函数不要私有化, 私有化构造函数是 创建单例设计模式的时候用的
作者:
as_heima
时间:
2014-8-7 21:14
不知道楼主为什么把父类和子类里的构造器都私有化了?目前我只看到需要用到单例模式,才对构造器进行私有化:)
作者:
as_heima
时间:
2014-8-7 21:34
子类继承父类,当对子类进行实例化时C c = new C();如果被实例化的类有父类,将先调用父类的构造方法,这时楼主把父类的构造器私有化了,所有就报错了:lol
作者:
姜佳文
时间:
2014-8-7 21:43
你加private修饰了构造函数,子类还怎么走父类的构造方法初始化父类啊?
作者:
/aiq玩完?/aiq
时间:
2014-8-7 21:55
楼上全是正解,本人基础还不太好!:lol
作者:
Justfeeling
时间:
2014-8-7 22:23
class Test1{
public static void main(String[] args) {
A a=new A();
a.fun(); // y+x=30
C c=new C();
c.fun(); // y=21 C内的函数是fun还是run?构造器没用处吧?
A a1=new C(); //多态
a1.fun(); // y=21
}
}
class A{
A(){}
private int x=10;
protected int y=20;
void fun(){
System.out.println("y+x="+(y+x));
}
}
class C extends A{
C(){}
void fun(){
y=y+1;
System.out.println("y="+y);
}
void run(){
y=y+1;
System.out.println("y="+y);
}
}
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2