看书里说。。内部类不能声明类变量与类方法不知道为什么?
不过写了一下程序唯一能声明类变量与方法就是把内部类先声明为类变量,但出现了一个警告:
the static method g() from A.B should be accessed in a static way
究竟应该怎么解释。
程序如下:
class A
{
B b=new B();
void f()
{
System.out.println("i am A.");
b.g();
} static class B
{
static void g()
{
System.out.println("i am B.");
}
}
}
public class neibu {
public static void main(String args[])
{
A a=new A();
a.f();
}}
不过写了一下程序唯一能声明类变量与方法就是把内部类先声明为类变量,但出现了一个警告:
the static method g() from A.B should be accessed in a static way
究竟应该怎么解释。
程序如下:
class A
{
B b=new B();
void f()
{
System.out.println("i am A.");
b.g();
} static class B
{
static void g()
{
System.out.println("i am B.");
}
}
}
public class neibu {
public static void main(String args[])
{
A a=new A();
a.f();
}}
楼主【xx21546544】截止到2008-07-19 02:08:40的历史汇总数据(不包括此帖):
发帖的总数量:1 发帖的总分数:0 每贴平均分数:0
回帖的总数量:1 得分贴总数量:0 回帖的得分率:0%
结贴的总数量:0 结贴的总分数:0
无满意结贴数:0 无满意结贴分:0
未结的帖子数:1 未结的总分数:0
结贴的百分比:0.00 % 结分的百分比:---------------------
无满意结贴率:---------------------无满意结分率:---------------------
如何结贴请参考这里:http://topic.csdn.net/u/20080501/09/ef7ba1b3-6466-49f6-9d92-36fe6d471dd1.html
成员类不能与外部类重名
不能在成员类中定义static字段、方法和类(static final形式的常量定义除外)。因为一个成员类实例必然与一个外部类实例关联,这个static定义完全可以移到其外部类中去
成员类不能是接口(interface)。因为成员类必须能被某个外部类实例实例化,而接口是不能实例化的。事实上,如示例代码所示,如果你以成员类的形式定义一个接口,该接口实际上是一个静态成员类,static关键字对inner interface是内含(implicit)的。
本来是类和方法都没加static的,我只是试一下怎样才能在内部类里面用static方法而已
看了2L的解释有点理解了,是不是就是在非静态内部类中如果声明类方法其实移到外部类中更好,所以JAVA就不提供在内部类中可以声明静态变量与方法这种机制了。。不知能否这样理解。。谢谢了那个warning也知道什么意思了。。谢谢这位大哥了