よく無視される細部の問題(一)

1982 ワード

1.java静的メソッドは上書きできますか?コードを貼って、例を見ます
public class Super {
    static String greeting(){   
          return "Good night";   
      }   

      String name(){   
         return "Richard";   
      }   
}

public class Sub extends Super{
    static String greeting(){   
         return "Hello";   
      }   

      String name(){   
         return "Dick";   
      }  
}

public class Test {
    public static void main(String[] args){   
        Super s = new Sub();   //s Super
        System.out.println(s.greeting()+","+s.name());  


        Sub s1 = new Sub();   //s1 Sub
        System.out.println(s1.greeting()+","+s1.name());
      }
}

 :
Good night,Dick
Hello,Dick

非静的メソッドが上書きされ、静的メソッドが上書きされないことは容易にわかりますが、どのメソッドを呼び出すかは、現在のオブジェクトのクラス情報が親に属するか、子に属するかによって異なります.