Java super 和 this 关键字

总结
super 访问父类内容, this 访问本类内容

super 关键字用法: (注:首字母小写)

  1. 在子类的成员方法中,访问父类的成员变量
  2. 在子类的成员方法中,访问父类的成员方法
  3. 在子类的构造方法中,访问父类的构造方法

this 关键字用法: (注:首字母小写)

  1. 在本类的成员方法中,访问本类的成员变量
  2. 在本类的成员方法中,访问本类的【另一个成员方法】
  3. 在本类的构造方法中,访问本类的【另一个构造方法】
    注:
    this 只能有一个(一个方法块中)
    this 和 super 不能同时使用(一个方法块中)
    类方法里面不能使用“this”关键字,因为没有实例存在,“this”不知道引用哪个实例

作用:解决命名冲突问题
变量:
局部变量: 直接写成员变量名
本(子)类的成员变量: this.成员变量名
父类的成员变量: super.成员变量名

例子

package supertest;

public class SuperClass {
    int num = 10;

    public SuperClass() {
        System.out.println("executing super class construction");
    }
    public void method() {
        System.out.println("executing super class method");
    }
}
package supertest;

public class SubClass extends SuperClass{
    int num = 20;

    public SubClass() {
        super();  // 3.访问父类构造方法
        System.out.println("executing sub class construction");
    }

    public void showNumber() {
        int num = 30;
        System.out.println("local variable, num: " + num);      // 局部变量
        System.out.println("super class, num: " + super.num);  // 1. 访问父类的成员变量
        System.out.println("sub class, num: " + this.num);      // 1. 访问本类的成员变量
    }

    @Override
    public void method() {
        // override super class method
        super.method();    // 2.访问父类的成员方法
        System.out.println("executing sub class method");
        this.anoMethod();  // 2.在本类的成员方法中,访问本类的【另一个成员方法】
    }

    public void anoMethod() {
        System.out.println("executing another method");
    }
}

package supertest;

public class SuperTest {
    public static void main(String[] args) {
        SubClass subClass = new SubClass();
        subClass.showNumber();
        subClass.method();
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值