黑马程序员技术交流社区

标题: 神们 挑战来了 为啥成员内部类中不能使用静态变量 [打印本页]

作者: 小乖乖灬浩歌    时间: 2014-7-17 20:11
标题: 神们 挑战来了 为啥成员内部类中不能使用静态变量
各位大神 请问成员内部类中为啥不能使用静态变量呢?
刚刚看完老毕的相关视频,晕乎乎的。而且老毕的视频里面没有关于这个部分代码的内存过程做画图分析 真的不是很懂。 请诸位画一内存图分析下成员内部类中为啥不能使用静态变量呢?
作者: a6511631    时间: 2014-7-18 09:45
静态变量存在方法区,生命周期最长,类一创建就生成,而外部类对象则需要在类实例化时才生成,总要讲究先来后到吧,内部类是依托外部类创建的啊,静态变量如果定义在内部类的话,外部类还没创建静态变量就要生成了,这就相当于一楼还没建好就要盖三楼了,是行不通的。所以成员内部类中不能使用静态变量
作者: 郭良    时间: 2014-7-18 09:54
因为内部类特殊,他被定向为是和成员变量,方法一样的外部类成员 他必须跟外部类实例相关联才能初始化,这是他的特点之一,为了这个其他东西都要让路 而静态成员是不需要实例就初始化的 如果一个非静态内部类有了静态成员,静态成员不依托于任何内部类实例,那结果也就是此内部类不需要外部类实例就初始化了变量,严重侵害了内部类的定向
作者: star5603    时间: 2014-7-18 12:20
a6511631 发表于 2014-7-18 09:45
静态变量存在方法区,生命周期最长,类一创建就生成,而外部类对象则需要在类实例化时才生成,总要讲究先来 ...

内部类中如果定义了静态成员,内部类也要必须是静态的。这个会对吧。
作者: a6511631    时间: 2014-7-18 16:11
star5603 发表于 2014-7-18 12:20
内部类中如果定义了静态成员,内部类也要必须是静态的。这个会对吧。

这个没错。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2