Java中的this与super关键字

this关键字:

构造方法之间的调用,可以通过this关键字来完成。只能在本类中构造方法里用,也只能调用构造方法。不能用在普通方法。

this(参数列表);

调用其他构造方法的语句必须定义在构造方法的第一行,原因是初始化动作要最先执行。

可以在成员变量名前面加上this.来区别成员变量和局部变量。

public class Person {
    private String name;
    private int age;
    //调用本类成员:this.成员(属性/方法)
    //构造方法之间的调用:this(参数列表)
    //注意事项:构造方法中的this()必须放在第一行,否则报错
    public Person(){
        this("小红",18);
        
    }
    public Person(String name,int age){
        this.name=name;
        this.age=age;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
    
}
public class Demo01 {

    public static void main(String[] args) {
    Person p=new Person();
    System.out.println(p.getName());

    }

}

super关键字:

1、在创建子类对象时,父类的构造方法会先执行,因为子类中所有构造方法的第一行有默认的隐式super();语句。

2、当子类调用父类的构造方法时,用super();

3、this调用了本类其他构造方法,那么super调用父类的语句没有的,因为初始化动作要先执行。主要在构造方法中直接或者间接的调用super()就可以完成初始化。(在开始的位置写本类的,在后面的方法中的调父类的)。

4、Java体系在设计,定义了一个所有对象的父类Object。

解决this和super谁在第一行的问题  间接的方式分开

public class Zi extends Fu{
    //在子类中用super.成员(方法/属性)调用父类成员
    //在子类构造方法中用super(实参)调用父类构造方法
    //注意事项:显示指定super()必须放在构造方法第一行
public Zi(){
    //每个类中的构造方法默认第一行都有
    //super();
    //调用父类构造方法
    //super("小红帽");
}
public Zi(String name){
    super("小红帽");
    //super();
}
}

猜你喜欢

转载自www.cnblogs.com/heitaitou/p/12814987.html