当前位置: 首页 > 知识库问答 >
问题:

我以为内部类可以访问外部类变量/方法?

秋煌
2023-03-14

我确实读过一些讨论内部类的主题,我的印象是内部类可以访问封闭类的变量和方法。下面我有一个外部类和一个内部类,在测试类中我创建一个外部类的实例,然后从它创建一个内部类的实例。但是,我无法通过内部类引用访问字符串变量a。帮忙?

public class OuterClass {

    String a = "A";
    String b = "B";
    String c = "C";

    class InnerClass {
        int x;

    }

    public static class StaticInnerClass {
        int x;
    }

    public String stringConCat() {
        return a + b + c;

    }
}

public class TestStatic {

    public static void main(String args[]) {

        OuterClass.StaticInnerClass staticClass = new OuterClass.StaticInnerClass();
        OuterClass outer = new OuterClass();
        OuterClass.InnerClass inner = outer.new InnerClass();

        System.out.println(inner.a);// error here, why can't i access the string
                                    // variable a here?

    }
}

共有1个答案

郑景胜
2023-03-14

内部类可以通过自己的方法访问外部类的方法和属性。请看下面的代码:

class OuterClass {

    String a = "A";
    String b = "B";
    String c = "C";

    class InnerClass{
        int x;
        public String getA(){
            return a; // access the variable a from outer class
        }
    }

    public static class StaticInnerClass{
        int x;
    }

    public String stringConCat(){
        return a + b + c;    
    }
}


public class Test{

    public static void main(String args[]) {

        OuterClass.StaticInnerClass staticClass = new OuterClass.StaticInnerClass();
        OuterClass outer = new OuterClass();
        OuterClass.InnerClass inner = outer.new InnerClass();

        System.out.println(inner.getA()); // This will print "A"
    }
}
 类似资料:
  • 问题内容: 我确实阅读了许多讨论内部类的主题,并且给人的印象是内部类可以访问封闭类的变量和方法。在下面的代码中,我有一个外部类和一​​个内部类,在测试类中,我创建了一个外部类的实例,然后从中创建了一个内部类的实例。但是我无法通过内部类引用访问String变量。救命? 问题答案: 内部类可以通过自己的方法访问外部类的方法和属性。看下面的代码:

  • 问题内容: 我来自Java背景,当您声明内部类时,它是静态的,不能访问外部类的实例,或者它不是静态的,并且可以访问正在被访问的外部类的实例。进行操作。参见http://en.wikipedia.org/wiki/Inner_class#Types_of_nested_classes_in_Java 斯威夫特对此有什么概念吗?从测试中,我似乎无法访问的对象,但是我肯定做错了。 问题答案: AFAIK

  • 问题内容: 在内部类中,可以访问外部类的变量,但不能访问方法的局部变量。我了解了无法访问方法的局部变量的部分,但我想知道为什么外部类变量可以访问? 我的理解是,由于内部类与外部类绑定,因此只要父级可用,子级就可以访问其父级变量。我对么? 问题答案: 假设您的外部类在内部类的范围内(非静态)被称为,以获取该字段。 例如, 其中Outer是类的名称,并标识该字段。 您也可以直接抓取它,但是如果由于阴影

  • 在内部类中,外部类的变量是可访问的,但方法的局部变量不是。我理解了关于方法的局部变量不可访问的部分,但我想知道为什么外部类变量是可访问的? 我的理解是,由于内部类与外部类绑定,因此只要父类可用,子类就可以访问其父变量。我说得对吗?

  • 问题内容: 我有一堂课,还有另一个内部课: 问题答案: 从其他答案中可以看出,您将需要一个非静态内部类来执行此操作。 如果您确实不能使内部类成为非静态类,则可以在外部类中添加所需的getter和setter方法,并通过在内部静态类内部创建外部类的实例来访问它们:

  • 我正在做下面这样的事情,但它不起作用。为什么?又是如何做到的呢?