黑马程序员技术交流社区
标题:
java中继承的问题
[打印本页]
作者:
wangchao1686
时间:
2013-12-8 01:03
标题:
java中继承的问题
子类继承父类后是否也继承了父类的构造函数了呢?看的视频上没有说到,在子类的构造函数中是通过super语句访问的父类的构造函数。既然子类继承了父类,子类就有了父类的属性和方法,构造函数作为一个函数,我想也应该被继承吧。可是我试了试,不通过super语句是没法调用父类的够函数的,求大神解答。
作者:
肖川
时间:
2013-12-8 12:27
不通过super依然可以调用父类的构造函数啊,例如下面所示,会打印
"fun run."
子类默认实现了父类的无参构造函数,自动调用了super语句。
public class Demo6
{
public static void main(String[] args)
{
new Zi();
}
}
class Fu
{
public Fu()
{
System.out.println("fu run.");
}
}
class Zi extends Fu
{
}
复制代码
作者:
wangchao1686
时间:
2013-12-8 12:33
你的意思我明白,但是这是隐式的super语句。还是通过super来调用的啊。
作者:
Weix1992
时间:
2013-12-8 13:45
本帖最后由 Weix1992 于 2013-12-8 13:48 编辑
wangchao1686 发表于 2013-12-8 12:33
你的意思我明白,但是这是隐式的super语句。还是通过super来调用的啊。
public class Demo6
{
public static void main(String[] args)
{
new Zi();
}
}
class Fu
{
public Fu()
{
System.out.println("fu run.");
}
}
class Zi extends Fu
{
}
复制代码
借用一下2L的代码,你每次new子类对象的时候,会调用子类的构造方法,但是其实子类的每个构造方法第一行都会默认有suepr()这句话,只不过是隐藏的,那么久是隐式调用
还有就是不能继承构造函数的原因之一,构造函数名字必须与类名保持一致,如果继承了那么久冲突了
作者:
绕世界流浪丶
时间:
2013-12-8 15:25
本帖最后由 绕世界流浪丶 于 2013-12-8 15:27 编辑
子类继承父类后,父类的所有方法和构造函数都可以重写,成员变量什么的都能通过super调用了。。。super调用的是方法里面的参数,方法是可以重写的。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2