• 重写与隐藏


         静态方法、成员变量不能重写,只可以隐藏;实例方法可以重写

         重写与隐藏的本质区别:重写是动态绑定,根据运行时引用所指向对象的实际类型来决定调用相关类的成员。而隐藏是静态绑定的,根据编译时引用的静态类型来决定调用相关类的成员。换句话说,如果子类重写了父类的方法,当父类的引用指向子类对象时,通过父类的引用调用的是子类的方法。如果子类隐藏了父类的方法(成员变量),通过父类的引用调用的仍然是父类的方法(成员变量),如下:

    class SuperXieYuYan{
        String s="SuperXieYuYan";
        public void mInstance(){
            System.out.println("mInstance() in SuperXieYuYan");
        }
        public static void mStatic(){
            System.out.println("mStatic() in SuperXieYuYan");
        }
    }
    public class XieYuYan extends SuperXieYuYan{
        String s="XieYuYan";
        public void mInstance(){
            System.out.println("mInstance() in XieYuYan");
        }
        public static void mStatic(){
            System.out.println("mStatic() in XieYuYan");
        }
        public static void main(String args[]){
            SuperXieYuYan sxyy=new SuperXieYuYan();
            XieYuYan xyy=new XieYuYan();
            System.out.println("父类的表现:");
            System.out.println(sxyy.s);
            sxyy.mInstance();
            sxyy.mStatic();
            System.out.println("子类的表现:");
            System.out.println(xyy.s);
            xyy.mInstance();
            xyy.mStatic();
            //将子类引用赋给父类
            sxyy=xyy;
            System.out.println("父类引用指定子类实例后的表现:");
            System.out.println(sxyy.s);
            sxyy.mInstance();
            sxyy.mStatic();
            }
    }

    输出为:

    父类的表现:
    SuperXieYuYan
    mInstance() in SuperXieYuYan
    mStatic() in SuperXieYuYan
    子类的表现:
    XieYuYan
    mInstance() in XieYuYan
    mStatic() in XieYuYan
    父类引用指定子类实例后的表现:
    SuperXieYuYan
    mInstance() in XieYuYan
    mStatic() in SuperXieYuYan

    在将子类实例赋给父类实例后,父类实例调用的还是原来的成员变量和静态方法

  • 相关阅读:
    一行代码搞定Dubbo接口调用
    测试周期内测试进度报告规范
    jq 一个强悍的json格式化查看工具
    浅析Docker容器的应用场景
    HDU 4432 Sum of divisors (水题,进制转换)
    HDU 4431 Mahjong (DFS,暴力枚举,剪枝)
    CodeForces 589B Layer Cake (暴力)
    CodeForces 589J Cleaner Robot (DFS,或BFS)
    CodeForces 589I Lottery (暴力,水题)
    CodeForces 589D Boulevard (数学,相遇)
  • 原文地址:https://www.cnblogs.com/godwhisper/p/6907978.html
Copyright © 2020-2023  润新知