黑马程序员技术交流社区
标题:
老毕视频中的一点疑问
[打印本页]
作者:
邵新瑜
时间:
2012-12-12 18:35
标题:
老毕视频中的一点疑问
老毕说:当外部类的静态方法访问内部类时,内部类一定要是静态!但是我用一下方法调用,内部类可以不是静态!
class Outer
{
class Inner1
{
public void show()
{
System.out.println("Inner1");
}
}
public static void function()
{
new Outer().new Inner1().show();
}
}
class day01
{
public static void main(String[] args)
{
Outer.function();
}
}
作者:
邵天强
时间:
2012-12-12 19:59
哥哥,那句话你理解的有误,对于静态方法只要类以加载,内存就会给它开辟一份空间
你想想此时有对象吗,你题目中的内部类是成员内部类,他就相当于外部类的成员,你想想
外部类的静态方法能访问外部类的非静态成员吗,而你现在直接把它的对象创建出来了,
那当然能够访问了,例如:如果你定义一个Person类,在测试类的静态方法中你创建了
Person类的对象,你想想能不能访问。毕老师的那句话是说:外部类的静态方法要想访问其他成员
,其他成员必须是静态的。
打个比喻:
public class Outer{
private String name;
public void test2(){
}
public static void test1(){
//此时能访问name和test2()吗?要想访问必须是静态的
//而你上面你直接创建了对象,那就不说了
new Outer().test2();
}
}
你上面定义的内部类就相当于外部类的成员,与上面的类似
作者:
罗会涛
时间:
2012-12-12 22:36
??
你不是没有调用内部类吗,调的不是外部类静态方法吗?
作者:
邵新瑜
时间:
2012-12-13 00:44
邵天强 发表于 2012-12-12 19:59
哥哥,那句话你理解的有误,对于静态方法只要类以加载,内存就会给它开辟一份空间
你想想此时有对象吗,你 ...
这个我知道哇,我的意思是老毕说的不清楚,他说内部类必须要静态,这是他的话不严谨嘛
作者:
冯超
时间:
2012-12-13 10:27
吹毛求疵的话就别说了·指出可见 把自己见解说出来。
作者:
brian
时间:
2012-12-18 20:18
1楼正解{:soso_e130:}
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2