• 关于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成员和受保护

  • 相关阅读:
    POJ 2017 No Brainer(超级水题)
    POJ 2017 No Brainer(超级水题)
    Poj1207 The 3n + 1 problem(水题(数据)+陷阱)
    Poj1207 The 3n + 1 problem(水题(数据)+陷阱)
    Poj1159 Palindrome(动态规划DP求最大公共子序列LCS)
    Poj1159 Palindrome(动态规划DP求最大公共子序列LCS)
    Poj1050_To the Max(二维数组最大字段和)
    Poj1050_To the Max(二维数组最大字段和)
    Poj 2602 Superlong sums(大数相加)
    Poj 2602 Superlong sums(大数相加)
  • 原文地址:https://www.cnblogs.com/dengshiwei/p/4258576.html
Copyright © 2020-2023  润新知