Java中的重载、重写和隐藏(续)

三、隐藏(Hide)
(1)提到隐藏,就不得不提到一个关键字--static,static是静态的意思,具体用法意义,各位可以去查相关的资料。这里我想说的,static方法在继承中的特殊性!
(1)子类不能重写(Overriding)父类的静态方法,只能隐藏(Hiding)父类的静态方法。

(2)什么叫隐藏父类的静态方法呢?就是说父类的静态方法和子类的静态方法是同时存在的,具体调用的是哪个方法,是要看调用的方法的引用是什么类型的引用,如果是父类型的引用,调用的就是父类的静态方法,如果是子类型的引用,调用的就是子类的静态方法。【这里面有些多态(Polymorphism)的知识,不懂的可以问我哈!】具体区别我们可以看一个例子,这个例子来自官方文档。

public class Animal 
{
    public static void testClassMethod() 
    {
        System.out.println("The class" + " method in Animal.");
    }
    public void testInstanceMethod() 
    {
        System.out.println("The instance " + " method in Animal.");
    }
}

The second class, a subclass of Animal, is called Cat:

public class Cat extends Animal 
{
    public static void testClassMethod() 
    {
        System.out.println("The class method" + " in Cat.");
    }
    public void testInstanceMethod()
    {
        System.out.println("The instance method" + " in Cat.");
    }

    public static void main(String[] args) 
    {
        Cat myCat = new Cat();
        Animal myAnimal = myCat;
        Animal.testClassMethod();
        myAnimal.testInstanceMethod();
    }
}

The output from this program is as follows:

The class method in Animal.

The instance method in Cat.


官方对重写和隐藏的说明:点击打开链接

你可能感兴趣的:(JAVA学习笔记)