黑马程序员技术交流社区
标题:
这段代码子类为什么没有继承父类Fu(int x)
[打印本页]
作者:
懒羊羊
时间:
2014-10-15 11:53
标题:
这段代码子类为什么没有继承父类Fu(int x)
class Fu{
Fu()
{
System.out.println("fu1");
}
Fu(int x)
{
System.out.println("fu..."+x);
}
}
class Zi extends Fu
{
Zi()
{
System.out.println("zi1");
}
Zi(int x)
{
System.out.println("zi..."+x);
}
}
class ExtendsDemo
{
public static void main(String[] args)
{
Zi z=new Zi();
Zi z1=new Zi(2);
}
}
输出结果是
fu1
zi1
fu1
zi...2
根据继承特性子类class Zi应该继承了父类里的Fu(int x); 函数,但是输出结果为什么没有
fu...2呢?
这样
Fu(int x)
{
System.out.println("fu..."+x);
}
就是一段废代码了?
请详细讲解下 谢谢了
作者:
javaAndroid
时间:
2014-10-15 12:04
1、你的两个类中都只有构造函数。
2、你为父类手动添加了一个无参构造函数
在子类的构造函数中,如果没有手动指定调用父类构造函数的话
那么子类会默认调用父类无参的构造函数
所以new出来的两个Zi类对象,虽然使用的构造函数不同
但是你没有为第二个构造函数手动调用父类构造函数
所以子类有参构造函数还是默认调用父类无参的那个构造函数
如果想要调用父类有参的构造函数
需要在子类有参的构造函数第一行添加super(x);
作者:
懒羊羊
时间:
2014-10-15 12:14
javaAndroid 发表于 2014-10-15 12:04
1、你的两个类中都只有构造函数。
2、你为父类手动添加了一个无参构造函数
在子类的构造函数中,如果没有手 ...
哦哦哦,我知道了,绕进去了。。。
作者:
家进
时间:
2014-10-15 13:40
想要调用 父类的有参构造函数,必须要在子类构造函数里声明呀,因为默认的都是调用父类无参的构造函数
作者:
朱小龙
时间:
2014-10-15 14:50
调用的是子类函数,子类函数只会运用到父类的构造函数
应该是这样的,所以父类中有int的那段话不会被调用到
非要应用的话,需要加入super关键字
作者:
朱小龙
时间:
2014-10-15 14:51
我也是新人....才看完的,说的不对请见谅哦
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2