个人对Java构造方法调用的总结

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

个人对Java构造方法调用的总结

1.构造方法必须与定义它的类有完全相同的名字。构造方法没有返回类型,也没有void。

2.类可以不声明构造方法,这时类中隐含声明了一个方法体为空的无参构造方法。但当类有明确声明构造方法时,它就不会自动生成。

3.构造方法的调用:子类首先要调用父类的构造方法才能继承父类的属性和方法。如果子类的构造方法中没有显式地调用父类的构造方法,则系统默认调用父类无参数的构造方法。说说3种情况:

①父类和子类都没有显式定义构造方法或者只定义了无参构造方法,这种情况下没有问题,Java 会顺着继承结构往上一直找到Object,然后从Object 开始往下依次执行构造函数。以下两个例子效果一样,只是Example2有相关输出:

Example1

public class test1 {

public static void main(String[] args){

A example =new A();

}

}

class A extends B{

}

class B{

}

Example2:

public class test {

public static void main(String[] args){

A example =new A();

}

}

class A extends B{

public A(){

System.out.println("A's constructor is invoked.");

}

}

class B{

public B(){

System.out.println("B's constructor is invoked.");

}

}

输出:B's constructor is invoked

A's constructor is invoked

②父类只定义有参构造方法,那么无论子类如何定义,编译都会报错,因为父类缺少了默认无参构造方法,需要显式定义。

public class test {

public static void main(String[] args){

A example =new A(3);

}

}

class A extends B{

public A(int a){

System.out.println("A's constructor is invoked."+"a="+a);

}

}

class B{

private int b=0;

//public B(){

// System.out.println("B's constructor is invoked.");

//}

public B(int b){

System.out.println("B's constructor is invoked."+"b="+b);

}

}

把注释符去掉就可以编译,输出:B's constructor is invoked.

A's constructor is invoked.a=3

③在父类只有有参构造方法而没有无参构造方法时,可以用super(参数)来调用父类构造方法,但super无参时需要父类的无参构造方法。

public class test {

public static void main(String[] args){

A example =new A(3);

}

}

class A extends B{

public A(int a){

super(a);

System.out.println("A's constructor is invoked."+"a="+a);

}

}

class B{

private int b=0;

public B(int b){

System.out.println("B's constructor is invoked"+"b="+b);

}

}

输出:B's constructor is invoked.b=3

A's constructor is invoked.a=3

此处指定用super(3)调用public B(int b),所以就有如下输出:

B's constructor is invoked.b=3

A's constructor is invoked.a=3

相关文档
最新文档