黑马程序员技术交流社区
标题:
关于外部类成员访问静态内部类中的非静态成员
[打印本页]
作者:
江大海
时间:
2013-5-8 08:13
标题:
关于外部类成员访问静态内部类中的非静态成员
本帖最后由 江大海 于 2013-5-8 18:07 编辑
静态方法不是只可以访问静态成员吗?为什么可以访问非静态的成员,代码展示如下
class Outer
{
private static int x = 3;
static class Inner//静态内部类
{
static void function()
{
System.out.println("innner :"+x);
}
}
static class Inner2//静态内部类
{
void show()
{
System.out.println("inner2 show");
}
}
public static void method()
{
//Inner.function();
new Inner2().show();//为什么静态方法可以访问非静态成员??
}
}
复制代码
作者:
汪平乐
时间:
2013-5-8 09:05
静态调用非静态,创建对象调用。代码new Inner2().show()相当于 Inner2 in = new Inner2();
in.show();
============================================================
作者:
邹铭钰
时间:
2013-5-8 09:12
new Inner2().show();
你这里new了一个对象,用对象来调用的,这是匿名对象调用方法,相当于
Inner2 i= new Inner2();
i.show();
作者:
liuelxiwd
时间:
2013-5-8 10:11
是因为你已经创建对象了,对象就可以调用该类里的所有方法和变量,如果你直接写show();这样就不对,本类这种情况下没有权限去访问它。
作者:
江大海
时间:
2013-5-8 18:07
liuelxiwd 发表于 2013-5-8 10:11
是因为你已经创建对象了,对象就可以调用该类里的所有方法和变量,如果你直接写show();这样就不对,本类 ...
哦,知道了,我说怎么回事,谢谢啦,学习了:lol
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2