关于this和super的区别

先看实例:

父类
class BaseClass{ 
    private int value; 
    public void printValue() { 
        this.run();		//注意这儿的是this
    } 
    private void run(){ 
        System.out.println("BaseClass.run():"+this.value); 
    } 
}

class ChildClass extends BaseClass { 
    private int value = 100; 
    public void printValue() { 
        super.run();		//注意这儿的是super
    } 
    //重写 
    private void run(){ 
        System.out.println("ChildClass.run():"+super.value);
    } 
}

class GrandsonClass extends ChildClass { 
    private int value = 200; 
    //再次重写 
    public void run() { 
        System.out.println("SunziClass.run():"+super.value); 
    } 
} 

测试:

public class Test { 
      public static void main(String[] args) { 
                BaseClass child = new ChildClass(); 
                fc.printValue(); 
                BaseClass Grandson = new GrandsonClass (); 
                fc1.printValue();
                ChildClass cc = new <span style="font-family: Arial, Helvetica, sans-serif;">GrandsonClass</span><span style="font-family: Arial, Helvetica, sans-serif;">(); </span>
                cc.<span style="font-family: Arial, Helvetica, sans-serif;">printValue</span><span style="font-family: Arial, Helvetica, sans-serif;">(); </span>
    <span style="white-space:pre">	</span> } 
} 
运行结果如下: 
ChildClass.run():0; 
SunziClass.run():100; 
FatherClass.run():0; 
重写父类方法属性,就是再创建了一个子类的特征,当你用this的时候,就覆盖了父类的特征了,但是父类特征还在那儿,用super就能访问道,但是只能在对象的内部使用.对象外面就只能看到覆盖了父类特征的子类特征了.
其实就是一句:" this是当前对象在堆空间的引用地址,super是当前对象的父类特征的引用

this获取到本类所有成员和父类的public成员,super是获取父类public成员和受保护

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值