• Java自学-接口与继承 隐藏


    Java中的方法隐藏

    与重写类似,方法的重写是子类覆盖父类的对象方法

    隐藏,就是子类覆盖父类的类方法

    步骤 1 : 父类

    父类有一个类方法 :battleWin

    package charactor;
      
    public class Hero {
        public String name;
        protected float hp;
      
        //类方法,静态方法
        //通过类就可以直接调用
        public static void battleWin(){
            System.out.println("hero battle win");
        }
          
    }
    

    步骤 2 : 子类隐藏父类的类方法

    package charactor;
      
    public class ADHero extends Hero implements AD{
      
        @Override
        public void physicAttack() {
            System.out.println("进行物理攻击");
        }
         
        //隐藏父类的battleWin方法
        public static void battleWin(){
            System.out.println("ad hero battle win");
        }   
         
        public static void main(String[] args) {
            Hero.battleWin();
            ADHero.battleWin();
        }
      
    }
    

    练习隐藏

    Hero h =new ADHero();
    

    h.battleWin(); //battleWin是一个类方法
    h是父类类型的引用
    但是指向一个子类对象
    h.battleWin(); 会调用父类的方法?还是子类的方法?

    答案

    虽然h指向的是一个子类对象,但是依然调用的是父类的类方法。
    甚至在h指向一个空对象null的时候,也能够成功调用battleWin().
    所以和h指向哪个对象无关,只和h的类型有关系。
    当然,也不建议通过对象去调用类方法,而应该直接通过类去调用类方法,从而规避理解上的歧义。

  • 相关阅读:
    设计模式(三):装饰模式
    实战pythoninstagram
    设计模式(二):观察者模式
    instagram 的api研究
    设计模式(四):代理模式
    设计模式(五):工厂模式
    qq微博oauth认证记录
    js 处理json数据记录
    17Django高级之Auth
    20Django高级之信号
  • 原文地址:https://www.cnblogs.com/jeddzd/p/11516002.html
Copyright © 2020-2023  润新知