this关键字的使用:

1.this可以用来修饰:属性、方法、构造器

2.this修饰属性和方法:

  this理解为:当前对象 或者 当前正在创建的对象

  2.1.在类的方法中,我们可以使用“this.属性”或者"this.方法"的方式,调用当前对象的属性或者方法,但是通常情况下,我们都选择省略"this."。特殊情况下,如果方法的形参和类的属性同名时,我们必须显式地使用“this.变量”的方式,表明此变量是属性,而非形参。

  2.2.在类的构造器中,我们可以使用“this.属性”或者"this.方法"的方式,调用当前正在创建的对象属性或者方法,但是,通常情况下,我们都选择省略"this."。特殊情况下,如果构造器的形参和类的属性同名时,我们必须显示地使用"this.变量"的方式,表明此变量是属性,而非形参。

3.this调用构造器

  3.1.我们在类的构造器中,可以显示地使用“this(形参列表)”的方式,调用本类中指定的其他构造器

  3.2.在构造器中不能通过“this(形参列表)”方式调用自己,不然就是死循环了

  3.3.如果一个类中有n 个构造器,则最多有n - 1 构造器使用了"this(形参列表)",因为不能有n 个,不然成了一个环,就又变成了死循环

  3.4.规定:”this(形参列表)“只能在首行

  3.5.构造器内部,只能有一个"this(形参列表)"用于调用其他构造器

(注意:当通过"this(形参列表)"调用其他构造器的时候,只创建一个对象!!)

class Person{
    private int age;
    private String name;
    
    public Person(){
        this.eat();
    }

    public Person(String name){
        this();
        //在这里调用空参的构造器下的东西
        this.name = name;
    }

    public Person(int age){    
        this();
        this.age = age;
    }

    public Person(String name, int age){
        this(age);
        //这里也可以传入一个形参,调用上面一个构造器下的代码
        this.name = name;
        this.age = age;
    }    

    public void setName(String name){
        this.name = name;
    }

    public String getName(){
        return this.name;
    }

 

super关键字的使用:

1.super调用构造器

  1.1.我们可以在子类的构造器中显式地使用“super(形参列表)”的方式,调用父类中声明的指定的构造器

  1.2.“super(形参列表)”的使用,必须声明在子类的构造器的首行

  1.3.我们在类的构造器中,针对“this(形参列表)”或者“super(形参列表)”只能二选一,不能同时出现

  1.4.在构造器的首行,没有显式地声明“this(形参列表)”或者“super(形参列表)”的时候,则默认调用的是父类中的空参的构造器

  1.5.在类的多个构造器中,至少有一个类的构造器中使用了“super(形参列表)”,调用父类中的构造器

 posted on 2020-10-29 16:34  又在化学楼迷路了  阅读(160)  评论(0)    收藏  举报