一些经常被忽略的细节性问题(一)

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

很容易可以看出来,非静态方法会被覆盖,而静态方法不会被覆盖,调用哪个方法取决于当前对象的类信息是属于父类还是属于子类

你可能感兴趣的:(java-笔记)