多个子类重写了父类中的抽象方法,父类中调用抽象方法时,怎么判断哪个子类重写了该父类中的方法?
你可以在抽象方法中带一个参数,这个参数就是传入子类自己,这样就可以知道了.
调用方法是传参数就可以区分开
调用的时候是通过实例调用的,这个实例是哪个类就调用哪个类的方法。
举例:
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的重载方案;
很简单 在继承的类里面都打印一句话就可以了
编译看左边,运行看右边
子类在继承抽象方法的时候,就_必须_实现该方法。所以只要是子类,那么必然实现了抽象方法
写子类调用父类的方法时,返回不同值即可