A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 冯国强 中级黑马   /  2013-11-3 17:49  /  1314 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

在继承中,例如有三个类,A,B,C ;C继承B,B继承A,那么在B类中能否指定调用类A中的某个构造函数?在C类中能否指定调用A类中的某个构造函数?

7 个回复

倒序浏览
在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类的构造函数。

评分

参与人数 1技术分 +1 收起 理由
乔兵 + 1

查看全部评分

回复 使用道具 举报
我的理解是构造函数是给类初始化用的,建立该类的一个对象就会对该类初始化一次。每个类中都有一个空参数构造函数,我们也可以自定义构造函数。
子类中的构造函数中第一行如果不声明使用父类中的何种构造函数,那么都会有super();默认调用父类中的空参数构造函数
回复 使用道具 举报
调用父类的函数(包括构造函数)需要使用super
在B类中可以使用super.A类的方法或super(构造参数)
但是在C类中无妨直接调用A类的构造,但是会间接的调用A类的构造!
回复 使用道具 举报
直接子类可以通过super关键字直接调用父类中的构造函数,但是孙类级别的,还没有方法直接进行访问,只能通过楼上说的,通过B来间接访问。但是A中的其他方法还是可以直接访问的。
  1. class A
  2. {
  3.    A()
  4.    {
  5.            System.out.println("A.name=null");
  6.         }
  7.    A(String name)
  8.    {
  9.            System.out.println("A+name="+name);
  10.    }
  11.    public void test()
  12.    {
  13.            System.out.println("this is class A--function test");          
  14.    }
  15. }
  16. class B extends A
  17. {
  18.    B()
  19.    {
  20.            super("tom");
  21.            System.out.println("B.name=null");
  22.         }
  23.    B(String name)
  24.    {   super();
  25.            System.out.println("B+name="+name);          
  26.    }
  27. }
  28. class C extends B
  29. {
  30.    C()
  31.    {   
  32.            super();
  33.            System.out.println("C.name=null");
  34.     }
  35.    C(String name)
  36.    {
  37.            System.out.println("C+name="+name);          
  38.    }
  39. }
  40. public class HelloWorld {
  41.         public static void main(String[] args) {

  42.                 new C().test();
  43.         }
  44. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
乔兵 + 1

查看全部评分

回复 使用道具 举报
子类不继承父类的构造方法,在子类的构造方法中可以使用super(参数列表)调用父类的构造方法,如果没有显示,在父类有默认构造函数的情况下,产生子类实例时,系统默认调用父类的无参构造方法,C类不能直接调用A的构造方法,但可以通过B间接调用
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马