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

 

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

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

 

Java精选笔记_面向对象(构造方法、this关键字、static关键字、内部类)

构造方法constructor构造器 构造方法的定义 [修饰符]  类名 (形式参数列表){         //语句 } 构造器用于构造该类的实例。作用:用来初始化对象!一般由系统在创建对...
  • xiaoye142034
  • xiaoye142034
  • 2017年06月28日 01:21
  • 193

java调用notes API 发送邮件

最近需要调用Notes java API来发送邮件.主要参考了以下两个博客: 1   http://www.blogjava.net/jiangmin/articles/76137.html这个博客完...
  • lihe2008125
  • lihe2008125
  • 2010年02月22日 17:37
  • 2261

java中this语句来调用其他构造方法的规则

大家对java构造方法的理解吗?对于java构造方法一般需要满足以下几条规则: (1)方法名必须与类名保持一致。 (2)不要声明返回类型。 (3)不能被static, final, synchr...
  • rockpk008
  • rockpk008
  • 2016年06月18日 23:05
  • 1823

面向对象-构造方法2-构造方法中调用另一个重载构造方法

承接面向对象-构造方法1 如何在构造方法中调用另一个重载的构造方法:案例: 编写汽车类 汽车类属性: int id; String brand; String color; int weig...
  • prince77qiqiqq
  • prince77qiqiqq
  • 2016年05月22日 14:23
  • 987

Java构造方法的相互调用

构造方法
  • lin353809836
  • lin353809836
  • 2017年04月19日 10:20
  • 3803

java的继承关系中,构造方法调用问题

考虑下下面代码输出结果 public class test3 {     public static void main(String[] args) {         new Child("mik...
  • u013427324
  • u013427324
  • 2016年06月01日 14:33
  • 678

用this调用类的构造方法

今天看书看到JAVA中This调用类的构造方法,书上写的不太明确,所以找了点资料补充了一下。 在一个Java类中,其方法可以分为成员方法和构造方法两种。构造方法是一个与类同名的方法, 在Java类...
  • maozhennba3
  • maozhennba3
  • 2015年11月18日 14:41
  • 3771

你可曾注意到类的构造方法中用this调用另外一个构造方法

public class Test{ private int x; private String s; public Test(int x) { this.x ...
  • qq1623267754
  • qq1623267754
  • 2014年05月06日 16:39
  • 1799

使用this调用本类中的其他构造函数

有一个Person类,里面有3个属性,Name,Age,Email,在创建Person类的时候,对其进行初始化,有几种情况,可能年龄没有填写,也可能Email没有填写,所以构造函数要有多个,以保证没填...
  • yinnan0422
  • yinnan0422
  • 2016年05月03日 10:40
  • 274

使用this调用构造方法

package lkp; class Person{ private String name; private int age; public Person(){ System.out.p...
  • kp_liu
  • kp_liu
  • 2014年07月23日 20:25
  • 1297
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Notes(1):构造方法的调用
举报原因:
原因补充:

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