当前位置: 代码迷 >> 综合 >> java中多个子类实现了父类的同一个抽象方法,那么我调用该抽象方法时如何确定走哪一个子类的同名方法呢
  详细解决方案

java中多个子类实现了父类的同一个抽象方法,那么我调用该抽象方法时如何确定走哪一个子类的同名方法呢

热度:36   发布时间:2023-11-02 11:50:34.0

上一篇说了java中多个子类实现同一个接口,怎么区分调的是哪一个实现类

java中多个子类实现了父类的同一个抽象方法,那么我调用该抽象方法时如何确定走哪一个子类的同名方法呢?

答:

抽象类无法实例化,实例化的只能是子类。如Father是一个抽象父类,有一个talk抽象方法,和一个speak的普通方法。Son,Son2是他的子类,有一个talk方法的具体实现。

那么可以Father f =new Son();这里不能new Father,抽象类无法实例化,而f.talk();调用的是Son的talk具体实现,f的本质还是Son,当作Father在处理而已。而f.speak(),调用的也是Son的speak();因为这是Son继承过来的,没有重写的话,会跟Father的speak()方法一模一样。

如果是Father f=new Son2();那么f调用的方法就全是Son2这个类的。

假如做了某种封装,某个方法返回了一个Father,那么你只能根据那个方法具体的代码来看到底那个实例是哪一个So

还有两种方式:

1 注解@Serice("别名")

2 注解@Qualifier

希望对你有帮助!