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も時間の空のオブジェクトヌル点で、それは正常battleWin()を呼び出すことができる
ように、オブジェクトポイントを、hは単にとの関係hのタイプ、独立しています。
もちろん、理解の曖昧さを避けるために、クラスメソッドを呼び出すクラスのメソッドを呼び出すことではなく、クラスを介して直接行くべき対象ではお勧めしません。

おすすめ

転載: www.cnblogs.com/jeddzd/p/11516002.html