黑马程序员技术交流社区

标题: 有关继承~ [打印本页]

作者: 吴超    时间: 2012-5-20 21:47
标题: 有关继承~
  1. class Demo4
  2. {
  3. public static void main(String[] args)
  4. {
  5.   System.out.println("Hello World!");
  6. }
  7. }
  8. class Fu
  9. {
  10. Fu(int x)
  11. {
  12.   System.out.println(x);
  13. }
  14. }
  15. class Zi extends Fu
  16. {
  17. Zi()
  18. {
  19.   //super();
  20. }
  21. }
复制代码
为什么会报错,加上super(3),能具体说下吗~
作者: 王怡然    时间: 2012-5-20 22:01
  1. class Demo4 {

  2.         public static void main(String[] args) {

  3.                 System.out.println("Hello World!");

  4.         }

  5. }

  6. class Fu

  7. {
  8.         Fu(){}//空构造

  9.         Fu(int x)

  10.         {

  11.                 System.out.println(x);

  12.         }

  13. }

  14. class Zi extends Fu

  15. {

  16.         Zi()
  17.        
  18.         {

  19.                 //super(3);这里访问的是 父类中的带参构造;

  20.         }

  21. }
复制代码
父类中没有自定空构造你在子类中访问父类的空构造搞什么东西啊?
你在子类空构造中加上了一条访问父类的有参构造,当然可以访问了,
你要想不加super()就把父类的空构造加上.

作者: 吴超    时间: 2012-5-20 22:07
王怡然 发表于 2012-5-20 22:01
父类中没有自定空构造你在子类中访问父类的空构造搞什么东西啊?
你在子类空构造中加上了一条访问父类的有参 ...

父类不加空函数,子类用有参super(4);
这是格式这样还是其他什么~
作者: 魏涞    时间: 2012-5-20 22:10
class Demo4
{

public static void main(String[] args)
{

  System.out.println("Hello World!");

}

}

class Fu

{

Fu(int x)

{

  System.out.println(x);

}

}

class Zi extends Fu

{

Zi()

{

  //super(); //父类自定义了带参的构造方法,系统将不再提供默认的无参构造,在子类的构造方法中,默认加上父类的无参构造,但父类没有了无参构造,就要显示的写出父类的带参构造,这里应写super(3);

}

}
作者: 杨梦宇    时间: 2012-5-20 22:15
你自己写了有参的构造方法了 系统就不再总调用无参的了
作者: 吴超    时间: 2012-5-20 22:15
魏涞 发表于 2012-5-20 22:10
class Demo4
{

感谢,我发现我在一些问题上很纠结~~~
我知道,每个类都继承object,而每个构造函数都会隐示super()~
作者: 韩新凯    时间: 2012-5-20 23:05
子类构造函数中有隐式的super();
父类没有空参构造函数,能不报错吗?super(3);调用了父类的含参构造函数啊。
作者: 王怡然    时间: 2012-5-20 23:34
吴超 发表于 2012-5-20 22:07
父类不加空函数,子类用有参super(4);
这是格式这样还是其他什么~

要是不熟练,每次写类的时候就把无参构造写上,要不容易出错,
只要加上有参构造,就不会给无参构造了,
而且在构造函数中的第一行都会有隐式的super().这点要注意;
多做做笔记,总结,比什么都强;




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