gpt4 book ai didi

java - 内部类和嵌套类

转载 作者:行者123 更新时间:2023-12-02 09:00:24 26 4
gpt4 key购买 nike

Oracle 文档(在下面的链接中)说:

Non-static nested classes (inner classes) have access to other members of the enclosing class, even if they are declared private.

但在下面的示例中,我创建了一个对象 objin (内部类),它无法访问其封闭外部类的任何方法或变量。下面是代码,有人能解释一下吗?

http://docs.oracle.com/javase/tutorial/java/javaOO/nested.html

package Package_1;
public class Outer {

int k;
public void Multiply()
{
System.out.println("inside outer class' method multiply");
}

public class Inner {
int l;
public void Division()
{
System.out.println("inside inner class' method Divison");
}

}
}

具有 Main 方法的类

package Package_1;

public class D {

public static void main(String[] args) {
Outer objout = new Outer();
objout.k = 5;
objout.Multiply();

Outer.Inner objin = objout.new Inner();
objin.l = 7;
objin.Division();
}
}

使用 objin 对象,我无法访问其封闭类中的 Multiple 方法。

最佳答案

我看到你的“隐私”!

从非静态嵌套类(内部类)的代码中,您可以访问封闭类的公共(public)和私有(private)成员。

enter image description here

但这是你的“私有(private)”,不是我的!

当你尝试这样做时,这就是你的想法 objin.Multiply() :您正在访问Multiply()就好像它是内部类的成员,但事实并非如此。请记住,您可以从内部类的代码中看到它,但它不会像您的代码一样被公开。

enter image description here

关于java - 内部类和嵌套类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20298705/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com