黑马程序员技术交流社区
标题:
关于静态内部类的问题
[打印本页]
作者:
唐巍
时间:
2012-3-6 02:15
标题:
关于静态内部类的问题
本帖最后由 唐巍 于 2012-3-6 02:15 编辑
问题代码:
class Outer
{
private static int x=3;
static class Inner
{
static void function()
{
System.out.println("inner:"+x);
}
}
static class Inner2
{
void show()
{
System.out.println("inner2 show");
}
}
static void method()
{
Inner2.show();//报错位置。Inner2是静态内部类,为什么不能用类名直接调用show方法?
Inner.function();
}
}
class InnerDemo2
{
public static void main(String[] args)
{
Outer.method();
}
}
作者:
杨毅
时间:
2012-3-6 09:54
因为show()方法不是静态的,可以用类名直接调用要求的是方法静态,而不是类
作者:
张开开
时间:
2012-3-6 10:00
楼上正解
作者:
程洪
时间:
2012-3-6 10:00
{:soso_e127:}静态方法才能直接被类名调用! JVM 初始化了你的类 但是没有在方法区中加载静态方法 那么你的类名去哪里调用这个方法呢?
作者:
黄方
时间:
2012-3-6 10:54
额,看你的问题,首先我要说的是,你提的这个问题我觉得非常好的一个问题啦!关于这个问题是这样的:
静态方法又称类方法,非静态方法称对象方法。这句话表示静态方法可以直接用类调用,而非静态方法就必须要用对象才能调用
我相信LZ应该明白了你出错的原因了吧!!其它的我觉不多说了哈!
作者:
王杰
时间:
2012-3-6 11:09
Inner2.show();//报错位置。Inner2是静态内部类,为什么不能用类名直接调用show方法?
因为,show()不是静态的方法呀!如果你要调用必须是静态的,才能用类名调用。
当然你也可以创建一个对象以后在调用呀。比如:new Inner(),show();
作者:
泮和顺
时间:
2012-3-7 09:20
很想abstract类的那种逻辑,有抽象方法的类肯定是抽象类 ,当然没抽象方法的也可以定义为抽象类 那种修饰逻辑很相像,必须承认有抽象方法的抽象类才有实际意义,就如果有静态方法的类才是有意义的静态类。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2