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

原创 2007年09月20日 11:45:00

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)会去竞争第一语句的位置。

 

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

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

 

相关文章推荐

OC特有语法1—点语法,成员变量作用域,@property,id,构造方法,多文件编程

http://blog.csdn.net/a88410518/article/details/45074141 一.点语法 1.利用点语法可以替换set方法和get方法...
  • jeffasd
  • jeffasd
  • 2016年06月13日 22:24
  • 235

1. ThreadPoolExecutor的一个常用的构造方法

ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, TimeUnit unit, Bl...

java进阶(三):反射(1)——构造方法和属性的反射

一、 二、 三、

Java之String类--(1)构造方法

在Java中有很多常用类,String类就是其中的一种,这篇文章我们来简单介绍一下String类。...

[Effective Java Distilled] Item 1 考虑使用静态工厂方法来替换构造方法

关于Effective Java Distilled: 《Effective Java》这本书我断断续续的读了近两遍,里面的内容挺有深度,对提高工程代码质量也非常有帮助。我打算慢慢的整理出来一个系列...

effective java观后感(1)-------用静态方法代替构造方法

Effective Item - 考虑用静态工厂方法代替构造器我们有两种常见的方法获得一个类的实例: 公有的构造器提供静态工厂方法(static factory method)   ...

随堂笔记7.29:对象,接口,构造方法,引用数据类型,抽象类,抽象方法-------1

1创建对象//创建对象,会调用构造方法 //类中如果没有声明构造方法时会默认生成无参构造方法。2.构造方法//初始化类当中的所有属性 //未赋值的属性为默认值,引用对象为null,bolean为f...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Notes(1):构造方法的调用
举报原因:
原因补充:

(最多只允许输入30个字)