嵌套类与子类命名相同产生的问题
class A
{
static class B
{
}
}
class B extends A
{
public static void f()
{
}
}
class C extends B
{
public static void f()
{
}
public static void test()
{
f();
B.f(); //编译错误:The method f() is undefined for the type A.B
}
}
如上代码,C.test()中用B.f()实际会调用A.B的方法f(),如果要调用外部类B的f(),要怎么做?
本人java新手,试验内部类例子时碰到这问题。
------解决方案--------------------个人浅见:
楼主这个程序有3个特殊地方, 1是静态内部类与其外围类子类同名;2是外围类子类的子类又隐藏了父类的静态方法;3 是试图在子类里操作父类的隐藏的静态方法。
这里的静态内部类是:B, 外围类是 A, 外围类子类是 B, 外围类子类的子类是 C.
我测试了,这种情况是没有办法实现的。
要么把静态内部类换名, 要么不要在C类里隐藏其父类B的静态方法(或者说给C的方法f() 换个名字。
------解决方案--------------------论 package 的重要性