子类重写父类抽象方法

多个子类重写了父类中的抽象方法,父类中调用抽象方法时,怎么判断哪个子类重写了该父类中的方法?

你可以在抽象方法中带一个参数,这个参数就是传入子类自己,这样就可以知道了.

调用方法是传参数就可以区分开

调用的时候是通过实例调用的,这个实例是哪个类就调用哪个类的方法。

举例:

    public static class A {
        public void dosth() {
            System.out.println("a");
        }
    }
    public static class B extends A {
        public void dosth() {
            System.out.println("b");
        }
    }
    public static class C extends A {
        public void dosth() {
            System.out.println("c");
        }
    }
    public static void main(String[] args) {
        A a1 = new A();
        A a2 = new B();
        A a3 = new C();

        a1.dosth();
        a2.dosth();
        a3.dosth();
    }

输出

a
b
c

这个跟对象在构造的时候决定的,就是C++的多态的概念。在调用的时候其实是调子类中的实现

3楼正解,补充一句:父类本身的对象是不能调用自己的抽象方法的,必须指定子类才能调用。

你可以在抽象方法中带一个参数,这个参数就是传入子类自己,这样就可以知道了.

调用之前输出一下这个子类的类名不就可以了吗

你可以在抽象方法中带一个参数,这个参数就是传入子类自己,

定义的方法里面里输出一下

明白了 是抽象方法调用 如果子类不是抽象的 直接创建即可

针对java,要正确理解java的多太,
你有一个 class A{
public boolean check(){
test();
}

public abstract test();
}

这个时候有个B extends A 了,重载覆盖了test;那么调用的时候怎么调用确认呢,

A a = new B();
a.check();
执行的是B的重载方案;

很简单 在继承的类里面都打印一句话就可以了

编译看左边,运行看右边

子类在继承抽象方法的时候,就_必须_实现该方法。所以只要是子类,那么必然实现了抽象方法

写子类调用父类的方法时,返回不同值即可