小笔记 构造函数 父类

今天读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:

重载要求:参数个数不同或者参数类型不同,返回值不同没用

 

posted @ 2013-04-21 00:53  拙急鸟  阅读(152)  评论(0编辑  收藏  举报