黑马程序员技术交流社区
标题:
用是static声明的内部类访问非static的外部类属性
[打印本页]
作者:
夏一站
时间:
2013-7-23 10:44
标题:
用是static声明的内部类访问非static的外部类属性
class Outer
{
int score =95;
void inst()
{
Inner in =new lnner();
in.display();
}
//用static声明内部类
static class Lnner
{
void player()
{
System.out.println("成绩:score="+score);
}
}
}
public class LnnerClassDemo
{
public static void main(String[] args)
{
Outer outer =new Outer();
outer.inst();
}
}
复制代码
由于内部类Inner声明为static类型,所以无法访问外部类中的非static属性score,这是什么意思呢?
作者:
yangqing
时间:
2013-7-23 11:08
静态方法不能访问非静态的成员(方法或属性)
如果在类中声明了一static类型的属性,则此属性既可以在非static类型的方法中使用,也可以在static类型的方法中使用。但用static类型的方法调用非static类型的属性时,则会出现错误。
作者:
Angel♥儱唲
时间:
2013-7-23 11:30
本帖最后由 Angel♥儱唲 于 2013-7-23 11:32 编辑
补充一楼,这就是优先级的问题,被static修饰成员他们在类加载的时候就初始化了,而非静态的成员是随着对象的创建而存在的,也就是此处报错的原因,你加载类的时候首先静态的内部类被分配了内存空间初始化了,但是此时你外部类的非静态成员还没有存在,肯定访问不到报错啦
作者:
曹奎
时间:
2013-7-23 13:37
2楼正解
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2