super和this

1、super

(1)super的意义

super关键字表示对某个类的父类的引用,通常用来访问父类的方法、变量、构造方法(private类型的除外)。另外super不可以在static环境中使用,包括:static变量,static方法,static语句。

(2)super的用法

① 访问父类变量:super.count

② 访问父类方法:super.print()

③ 访问父类构造方法,但必须要写在构造方法内第一行,因为构造子类前需构造父类:super()或者super(...)

2、this

(1)this的意义

this代表着当前对象的引用或者当前对象的地址。this和super的用法大致相同,但this的含义比较复杂。另外this不可以在static环境中使用,包括:static变量,static方法,static语句。

(2)this的用法

① 访问当前对象的变量:this.count

② 访问当前对象的方法:this.print()

③ 访问当前对象的构造方法,但this和super不能同时出现在一个构造函数里面:this()或者this(...)

(3)this最容易混淆的地方
package cn.test;
public class A {
    public void test() {
        System.out.println(this.getClass().getName());
    }
}

package cn.test;
public class B extends A{
    public static void main(String[] args) {
        B b = new B();
        b.test();
    }
}

输出:cn.test.B

在继承关系中,不管父类还是子类,这些类里面的this都代表了最终new出来时的那个类型的实例对象,所以在父类中你可以中this获取到子类的信息!

results matching ""

    No results matching ""