如果是两个方法之间存在包含关系,则可以在方法B中调用方法A。
但构造器中不能直接调用,构造器必须使用new关键字来调用。
可是一旦使用new关键字来调用构造器,将导致系统重新创建一个对象。
1.为了解决这个问题,可以使用this关键字来调用相应的构造器。
例如:
package structurerOverride;
public class Apple {
public String name;
public String color;
public double weight;
public Apple(){};
public Apple(String name,String color){
this.name=name;
this.color=color;
}
public Apple(String name,String color,double weight){
//通过this调用另一个重载的构造器的初始化代码
<strong>this(name,color);</strong>
this.weight=weight;
}
}
使用
this
调用另一个重载的构造器只能在构造器中使用,而且必须作为都早起执行体的第一条语句
2.当想要调用父类的构造器时,可以使用super限定,用法类似this
例如:
package extendTest;
class Creature{
public Creature(){
System.out.println("Creature无参数的构造器");
}
}
class Animal extends Creature{
public Animal(String name){
System.out.println("Animal带一个参数的构造器,"+"该动物的name为"+name);
}
public Animal(String name,int age){
<strong>this(name);</strong>
System.out.println("Animal带两个参数的构造器,"+"其age为"+age);
}
}
public class WolfRecall extends Animal {
public WolfRecall(){
<strong>super("灰太狼",3);</strong>
System.out.println("Wolf无参数的构造器");
}
public static void main(String[] args){
new WolfRecall();
}
}
输出结果为:
Creature无参数的构造器
Animal带一个参数的构造器,该动物的name为灰太狼
Animal带两个参数的构造器,其age为3
Wolf无参数的构造器