java中的虚方法调用 - 多态

sta*_*k92 0 java polymorphism

package polymordemo1; 

class animal{
    public void getanimal(animal anim) {
        anim.ganim();
    }

    private void ganim() {
        System.out.println("this is the animal");
    }
}

class cat extends animal{
    public void ganim() {
        System.out.println("I am cat");
    }
}

class bat extends animal{
    public void ganim() {
        System.out.println("I am bat");
    }
}
public class PolymorDemo1 {
public static void main(String[] args) {
        animal a=new animal();
        cat c=new cat();
        bat b=new bat();

        a.getanimal(c);
        a.getanimal(b);

    }
}
Run Code Online (Sandbox Code Playgroud)

我是Java的新手,我正在研究多态性.

此代码的输出结果为:

这是动物

这是动物.

事实上我期待这个输出:

这是猫

这是蝙蝠

什么似乎是代码中的错误.

Pet*_*hev 6

更改private void ganim()public void ganim().不能以这种方式覆盖私有方法.