黑马程序员技术交流社区
标题:
继承
[打印本页]
作者:
冯国强
时间:
2013-11-3 17:49
标题:
继承
在继承中,例如有三个类,A,B,C ;C继承B,B继承A,那么在B类中能否指定调用类A中的某个构造函数?在C类中能否指定调用A类中的某个构造函数?
作者:
寻丶丶觅
时间:
2013-11-3 18:03
在B类中调用A类的构造函数,super(A类对应参数),C类不可以调用A类构造方法,不过可以通过B类传递
比如,简写了 只写了构造函数
A(String name)
{this.name = name;}
B(Striing name)
{super(name);}
C(String name)
{super(name);}//这里就是先把name传递到B类的对应构造函数,B又传递到A类的构造函数。
作者:
joechen
时间:
2013-11-3 18:21
我的理解是构造函数是给类初始化用的,建立该类的一个对象就会对该类初始化一次。每个类中都有一个空参数构造函数,我们也可以自定义构造函数。
子类中的构造函数中第一行如果不声明使用父类中的何种构造函数,那么都会有super();默认调用父类中的空参数构造函数
作者:
~﹏~
时间:
2013-11-3 18:24
调用父类的函数(包括构造函数)需要使用super
在B类中可以使用super.A类的方法或super(构造参数)
但是在C类中无妨直接调用A类的构造,但是会间接的调用A类的构造!
作者:
回天之力
时间:
2013-11-3 18:37
直接子类可以通过super关键字直接调用父类中的构造函数,但是孙类级别的,还没有方法直接进行访问,只能通过楼上说的,通过B来间接访问。但是A中的其他方法还是可以直接访问的。
class A
{
A()
{
System.out.println("A.name=null");
}
A(String name)
{
System.out.println("A+name="+name);
}
public void test()
{
System.out.println("this is class A--function test");
}
}
class B extends A
{
B()
{
super("tom");
System.out.println("B.name=null");
}
B(String name)
{ super();
System.out.println("B+name="+name);
}
}
class C extends B
{
C()
{
super();
System.out.println("C.name=null");
}
C(String name)
{
System.out.println("C+name="+name);
}
}
public class HelloWorld {
public static void main(String[] args) {
new C().test();
}
}
复制代码
作者:
剑魂
时间:
2013-11-3 18:41
子类不继承父类的构造方法,在子类的构造方法中可以使用super(参数列表)调用父类的构造方法,如果没有显示,在父类有默认构造函数的情况下,产生子类实例时,系统默认调用父类的无参构造方法,C类不能直接调用A的构造方法,但可以通过B间接调用
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2