【发布时间】:2010-06-30 14:08:31
【问题描述】:
我认为也许没有办法做到这一点,但我认为值得一问。我想做如下的事情:
public class Super {
public static String print() { System.out.println(new Super().getClass().getSimpleName()); }
public Super() {}
}
public class Subclass extends Super {
public Subclass() {}
public void main(String[] args) {
Super.print();
Subclass.print();
}
}
我希望让 Super.print() 显示“Super”,让 Subclass.print() 显示“Subclass”。但是,我看不到如何从静态上下文中执行此操作。感谢您的帮助。
我很清楚我可以在没有静态方法的情况下做到这一点,并且我可以将一个类传递给每个方法调用。我不想这样做,因为这需要在许多子类上重新定义几个静态方法。
【问题讨论】:
-
您可能希望 Subclass 扩展 Super 以便它可以调用 print() 并让 print() 返回一个字符串或将其签名更改为 void...仅供参考。
-
我将 extends Super 添加到我的示例中。我本来打算把它放在那里忘记了。
标签: java inheritance static