黑马程序员技术交流社区

标题: 子类构造函数问题 [打印本页]

作者: heima-shzhch    时间: 2014-4-11 11:32
标题: 子类构造函数问题
在面向对象继承的学习中在子类中默认的子类会去调用父类的那个无参数的构造函数
但是如果父类没有那个无参数的构造函数了,那子类的构造函数是否一定要写的与父类构造函数结构相同


作者: H._张_♂    时间: 2014-4-11 12:09
1.子类继承了所有父类的变量,继承的变量中除了私有都可以使用
2,子类在继承父类的时候,构造方法也继承下来,如果父类没有构造函数(默认构造函数为空),子类在创建的时候可以覆盖父类的构造函数(实际上也继承了一个空的父类构造函数);
3,如果父类没有为空的构造函数,子类也不能有空构造函数。
4,子类的构造函数不可以重写父类的构造函数。
  1. class Super{
  2.         int i = 0;
  3.         Super(int i){
  4.                 this.i = i ;
  5.         }
  6. }
  7. class Son extends Super{

  8.         //出错Son(){}
  9.         Son(int i) {
  10.                 super(i);               
  11.         }
  12.         /*Son(String s){
  13.                
  14.         }*///出错

  15. }
复制代码

作者: Monkey·D·Chas    时间: 2014-4-11 12:14
需要的
如果子类的构造函数是无参数的,那么在创建子类对象的时候 先调用父类的无参数的构造函数
class  zi extends fu
{
     zi()
    {
     super();//这句是隐藏的
     }    zi(int x)
    {
   //这里面也隐藏了一句 super() 即查询父类的无参数构造函数。
     }
zi(int x,int y){
  super(int x);//也可以调用父类的带参数的构造函数
}

}
class fu
{
   fu(){}   fu(int x){}

}



作者: 孤神法法    时间: 2014-4-26 11:57
子类继承父类,那么子类的构造函数会重载父类的构造函数(可以使有参数的,可以使无参的构造函数),如果你继承了父类,写自己的构造函数,当你写的构造函数父类没有,你如何重载?所以子类构造函数必须与父类的中某个构造函数形成重载,当子类构造函数不写base时候,会自动调用父类无参构造函数,如果父类只有有参的构造函数没有无参的构造函数,编译器会报错,这个你可以自己试试,自己学会调试验证问题才是解决问题的唯一根本方法




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2