从另一个内部类

时间:2016-04-19 07:52:39

标签: java methods inner-classes

我尝试从另一个内部类访问内部类方法。两个内部类都在同一个外部类中声明:

class OuterFoo{

    class innerFoo1{

        public void methodFoo1(){
            System.out.println(" Hello, i am in the inner foo 1");
        }
    }

    class innerFoo2{

        public void methodFoo2(){
           System.out.println(" Hello, i am in the inner foo 2");
        }
    }
}

现在,我想从methodFoo1访问methodFoo2

任何帮助将不胜感激。

5 个答案:

答案 0 :(得分:6)

您需要引用另一个内部类的实例。像这样:

public class OuterFoo {
    private class InnerFoo1 {
        private void helloFoo1 () {
            System.out.println("foo1");

            InnerFoo2 foo2 = new InnerFoo2();
            foo2.helloFoo2();
        }
    }
    private class InnerFoo2 {
        private void helloFoo2 () {
            System.out.println("foo2");

            InnerFoo1 foo1 = new InnerFoo1();
            foo1.helloFoo1();
        }
    }
}

答案 1 :(得分:1)

如果您的内部类被实例化为OuterFoo

你可以这样做:

class OuterFoo{
    final innerFoo1 if1 = new innerFoo1();
    final innerFoo1 if2 = new innerFoo2();

    class innerFoo1{
        public void methodFoo1(){
            System.out.println(" Hello, i am in the inner foo 1");
            if2.methodFoo2();
        }
    }

    class innerFoo2{
        public void methodFoo2(){
            System.out.println(" Hello, i am in the inner foo 2");
            if1.methodFoo1();
        }
    }
}

答案 2 :(得分:1)

根据你想要的实际程序应该做什么(如果你不需要实例化类InnerFoo并且只需要调用静态方法),你也可以创建类innerFoo2和方法methodFoo2静态。

public class OuterFoo{
class innerFoo1{
    public void methodFoo1(){
        System.out.println(" Hello, i am in the inner foo 1");
        OuterFoo.innerFoo2.methodFoo2();
    }
}
static class innerFoo2{
    public static void methodFoo2(){
        System.out.println(" Hello, i am in the inner foo 2");
    }
}

}

答案 3 :(得分:1)

试试此代码

public class OuterFoo{

    class innerFoo1{

        public void methodFoo1(){
            System.out.println(" Hello, i am in the inner foo 1");
        }
    }

    class innerFoo2{

        public void methodFoo2(){
            System.out.println(" Hello, i am in the inner foo 2");
        }
    }

    void displayInnerFoo1(){
        innerFoo1 object1= new innerFoo1();
        object1.methodFoo1();

    }

    void displayInnerFoo2(){
        innerFoo2 object2= new innerFoo2();
        object2.methodFoo2();

    }
    public static void main(String args[]){ 
        OuterFoo objectParent= new OuterFoo();
        objectParent.displayInnerFoo1();
        objectParent.displayInnerFoo2();


    }

}

答案 4 :(得分:0)

创建内部类的Object,然后只需使用点运算符即可访问它。

ClassName obj = new ClassName();
obj.MethodName();