声明父类时无法识别java接口方法

au9on6nz  于 2021-06-30  发布在  Java
关注(0)|答案(1)|浏览(423)

我很难给这篇文章起名。请随意解决这个问题。
但我的问题是,我有一个抽象类和一个从抽象类扩展而来的父类。我希望其中一个家长有2个以上的方法,并呼吁他们在主类。我想用一个接口来解决这个问题,但这不起作用。
以下是场景:
我的抽象课

  1. public abstract class AbstractClass {
  2. public abstract void method1();
  3. }

父类的我的接口

  1. public interface IInterface {
  2. void method2();
  3. }

我的家长班

  1. public class ParentClass extends AbstractClass implements IInterface{
  2. @Override
  3. public void method1() {
  4. // TODO Auto-generated method stub
  5. }
  6. //This is the additional method i want to use
  7. public void method2() {
  8. }
  9. }

我的主课

  1. public class MainClass {
  2. static AbstractClass a;
  3. static boolean condition = true;
  4. public static void main(String[] args) {
  5. if(condition) {
  6. a = new ParentClass(); // This class should contain the additional method
  7. }
  8. else{
  9. a = new AnotherParentClass();
  10. }
  11. a.method2(); <- This does not work. There is only method1()
  12. }
  13. }

如何完成这种结构?抽象类只有父类的基。但是我也想给父类一些额外的功能,但是我想在主类中使用抽象类,这样我就不必为一个类创建多个抽象。
任何提示都很感激
向努里问好

ukqbszuj

ukqbszuj1#

a 是静态类型的 AbstractClass 因此你只能看到它的方法。编译器无法知道运行时类型是否有任何其他方法。
假设您声明了另一个类 ParentClass3 extends AbstractClass 这没有实现 IInterface ?
唯一的解决办法就是 IInterface 在参考点。然后在运行时它要么调用方法(如果对象是正确的类型)要么抛出 ClassCastException .

相关问题