小笔记 构造函数 父类
今天读Arraylist的源码发现
public ArrayList(int initialCapacity) { super(); if (initialCapacity < 0) throw new IllegalArgumentException("Illegal Capacity: "+ initialCapacity); this.elementData = new Object[initialCapacity]; }
就像这边一定要写super()吗,父类中的构造函数没有做什么啊。发现自己对构造函数有点忘了,查资料去
子类继承父类,子类的构造方法如果没有使用super方法,子类首先调用父类无参的构造方法
所以上面程序中的super()写不写都一样,都会被调用,不过又巩固了一个知识点,开心
自己试验下:
创建父类
public class Father { Father(){ System.out.println("Father no parameter"); } Father(int i){ System.out.println("Father parameter " + i); } }
创建子类
public class Son extends Father{ Son(){ System.out.println("son no parameter"); } Son(int i){ System.out.println("son parameter" + i); } }
创建客户端运行
public class Client { /** * @param args */ public static void main(String[] args) { Son s = new Son(); System.out.println("======================"); Son s2 = new Son(2); System.out.println("======================"); } }
得到结果
Father no parameter
son no parameter
======================
Father no parameter
son parameter2
======================子类的构造方法如果没有使用super方法,子类首先调用父类无参的构造方法
PS:
重载要求:参数个数不同或者参数类型不同,返回值不同没用