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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 嘎路的米 中级黑马   /  2015-6-8 15:05  /  237 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

子类构造函数特点:
子类所有的构造函数,默认都会访问父类中空参数的构造函数。
因为子类每一个构造函数内的第一行都有一句隐式super();

当父类中没有有空参数的构造函数时,
子类必须手动通过super语句形式来指定要访问父类中的构造函数。

当然:子类的构造函数第一行也可以手动指定this语句来访问本类中的构造函数。
子类中至少会有一个构造函数会访问父类中的构造函数

代码如下:

  1. class Fu {
  2.         public Fu(String name) {
  3.                 System.out.println("fu..." + name);
  4.         }
  5. }

  6. class Zi extends Fu {
  7.         public Zi() {
  8.                 // super();//此语句不能执行,因为父类中没有空构造函数
  9.                 super("haha"); // 因为父类中没有默认空构造函数,子类必须手动通过super语句制定要访问的父类构造函数
  10.                 System.out.println("zi..run");
  11.         }

  12.         public Zi(String name) {
  13.                 this();
  14.                 // super(name);//错误,因为super()必须放在构造函数的第一行,一个构造函数中,super和this只能存在一个
  15.                 System.out.println("zi..." + name);
  16.         }

  17. }

  18. public class Demo {
  19.         public static void main(String[] args) {
  20.                 new Zi();//fu...haha        zi..run
  21.                
  22.                 new Zi("haha");//fu...haha                zi..run                zi...haha
  23.         }       
  24. }
复制代码

1 个回复

倒序浏览
嗯,总结的很好,个人感觉本质在于,在实例化子类对象时,需要先实例化父类,然后,才去实例化子类,理解这以后,再去理解多态,会更简单一些
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马