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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

©   /  2013-5-2 11:48  /  1740 人查看  /  11 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

在子类的每一个构造函数中,都会调用父类的构造函数。调用哪一个构造函数,这里分两种情况:
(1)不显式的用super来指定。这种情况下,会默认的调用无参数的构造函数。如果父类中没有无参数的构造函数,那么程序就会出错,就像以上那个例子。把A.java中的那个构造函数去掉,程序就能通过编译。如果一个类中,没有一个构造函数,那么编译器就会给这个类加上一个无参构造函数。
(2)显式的使用super来指定调用哪一个构造函数。在B.java的构造函数中加上super(1),程序也可以通过编译。
  1. A.java
  2. class A{
  3. public A(){
  4. System.out.println("A无参数构造函数被调用");
  5. }
  6. public A(int i){
  7. System.out.println("A有参数构造函数被调用");
  8. }
  9. }
  10. B.java
  11. class B extends A{
  12. public B(){
  13. }
  14. public B(int i){
  15. }
  16. }
  17. public static void main(String[] args){
  18. new B(1);
  19. }
  20. }
复制代码
这个程序打印:无参数的构造函数被打印。而不是:有参数的构造函数被打印。你只要不使用super来指定,他就会默认的去调用父类无参数的构造函数。

评分

参与人数 1技术分 +1 收起 理由
张熙韬 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马