有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何从另一个类调用抽象内部类的方法?

public class OuterClass {
     abstract class InnerClass {
         int value = 20;
         public void print(){
                 System.put.println("Value = " + getValue());
         }
         public abstract int getValue();
      }
 }

有人能帮我吗,我如何从另一个拥有main方法的Java类调用print()方法


共 (2) 个答案

  1. # 1 楼答案

    因为InnerClassnon static,所以需要一个OuterClass的实例来访问它。接下来,因为它是抽象类,所以您需要一个子类,您可以实际创建它的实例。在子类中,可以使用super调用super-classes方法

    我能想到的一个办法是

    public class HelloWorld {
    
    
        public static void main(String args[]) {
    
            OuterClass outerClass = new OuterClass();
            InnerSubClass myInstance = outerClass.new InnerSubClass();
            myInstance.print();
        }
    }
    
    class OuterClass {
    
        private InnerSubClass myInstance;
    
        abstract class InnerClass {
            int value = 20;
            public void print(){
                    System.out.println("Value = " + getValue());
            }
            public abstract int getValue();
         }
    
        class InnerSubClass extends InnerClass{
    
            @Override
            public void print(){
                super.print();
                System.out.println("In SUbclass");
            }
    
            @Override
            public int getValue() {
                return 0;
            }
    
        }
    }
    
  2. # 2 楼答案

    您不能实例化抽象类,因此要调用该类的实例方法,您需要将其子类化

    为了将其子类化,您需要实现其抽象方法

    new OuterClass().new InnerClass()
    {
       public int getValue()
       {
          return 1;
       }
    }.print();
    

    是一种方法,尽管在实践中您可能希望以不同的方式执行此操作,但其中一种方法是JBNizet建议在OuterClass中使用一个方法来返回您想要的InnerClass类型