真想每天都来这里帮别人解决一些问题,而不是总在这里发问。
不多说先来代码吧:
class A
{
static int num=2;
class C
{
void show()
{
System.out.println("C show");
}
}
public static void show()
{
new C().show();
}
}
毕老师虽讲了,但还是不太理解,为什么外部类中的静态方法访问非静态内部类方法不行呢?而在main方法中创建对象可以访问非静态类的方法。
例如:
class A
{
public void show()
{
System.out.println("hello java");
}
}
class TestA
{
public static void main(String [] args)
{
A a=new A();
a.show();
}
}
同样是一个类中的静态方法访问另一个类中非静态方法呀?求解。作者: 殇_心。 时间: 2013-5-18 21:12
理解问题。
静态当然不能直接访问静态。
A a=new A();// 实例化对象A
也就是说此时拥有了A的方法(私有不能调用除外)
当然是可以调用的。也就是说静态是可以间接通过实例化对象来调用对象的方法。作者: 炉海佳 时间: 2013-5-18 21:20
这个问题你只要搞清楚初始化的先后顺序就知道怎么回事了,静态方法是随类的加载而加载,它在对象前面,所以不知道后面的事情作者: 赵崇友 时间: 2013-5-18 21:27
这个问题是这样的,当外部类静态方法访问非静态内部类方法的时候,需要先创建内部类对象,然后才可调用内部类的方法。不是不可以,只是你创建的对象格式不对。看改正如下:
class A
{
static int num=2;
class C
{
void show()
{
System.out.println("C show");
}
}
public static void show()
{
new A().new C().show();//在创建内部类对象的时候,要先确定是哪个外部类的内部类。这个视频里有讲解,你应该有印象。另外这里是静态方法中所以要先建内部类对象,才可以调用其方法,这是static的特性。