Woods的专栏

学习和交流的平台

Notes(1):构造方法的调用

Note:

所有的子类构造方法默认调用父类的无参构造方法,只有当子类构造方法中指明调用父类的构造方法时,才会调用相应的父类构造方法。

Example:

public class Person {

    Person(){

           System.out.println("This is the Person!");

    }

    Person(String s){

           System.out.println("Person : "+s);

    }

}

 

public class Chinese extends Person{

       Chinese(){

              System.out.println("This is a Chinese!");

       }

       Chinese(String name){

              super(name);

              System.out.println("Chinese name is : "+name);

       }

       Chinese(String name,String address){

              this(name);

              System.out.println(name+"'s address is:"+address);

       }

       public static void main(String args[]){

              Chinese c=new Chinese("XiaoWang");

       }

}

运行的结果为:

Person : XiaoWang

Chinese name is : XiaoWang

 

在子类中可以使用super来调用父类的构造方法,可以使用this来调用自身的构造方法。

如:当main变成如下代码时,

public static void main(String args[]){

              Chinese c=new Chinese("XiaoWang","Shenzhen");

       }

运行的结果为:

Person : XiaoWang

Chinese name is : XiaoWang

XiaoWang's address is:Shenzhen

 

请注意:

如果把子类的构造函数改成如下形式是错误的:

Chinese(String name){

       System.out.println("Chinese name is : "+name);

super(name);

}

调用构造函数的语句必须放在构造函数所有语句的最前面。

所以,如下的形式也自然是错误的:

Chinese(String name,String address){

              super(name);

              this(name);

              System.out.println(name+"'s address is:"+address);

       }

因为super(name)this(name)会去竞争第一语句的位置。

 

由上面的描述,我们也可以得到下面的结论:

当有多层继承关系的时候,构造函数的执行顺序也是自上而下的,即先执行顶层类的构造函数,然后顺次执行到最低层类的构造函数,可以用栈的思想来理解。

 
阅读更多
文章标签: string class c
个人分类: Technical Documents
上一篇Wasting time at work?
下一篇Notes(2):键盘输入回车的一个小讨论
想对作者说点什么? 我来说一句

CFA LEVEL 1 NOTES 电子版

2014年09月08日 9.11MB 下载

2018CFA LEVEL 1-NOTES内容

2018年03月03日 63.41MB 下载

2018 FRM Schweser notes part1

2018年03月07日 118.94MB 下载

2018 FRM part1 Schweser notes

2018年03月07日 87.14MB 下载

没有更多推荐了,返回首页

关闭
关闭