如果将static关键字应用于任何方法,它将成为静态方法。
如果方法声明为静态,则它是类的成员,而不是属于该类的对象。可以在不创建该类的对象的情况下调用它。静态方法还具有访问类的静态数据成员的能力。
静态方法有一些限制
静态方法不能使用非静态数据成员,也不能直接调用非静态方法。
this和super不能在静态上下文中使用。
静态方法只能访问静态类型数据(静态类型实例变量)。
无需创建类的对象来调用静态方法。
静态方法不能在子类中覆盖
让我们看看尝试覆盖子类中的静态方法时会发生什么
class Parent { static void display() { System.out.println("Super class"); } } public class Example extends Parent { void display() // trying to override display() { System.out.println("Sub class"); } public static void main(String[] args) { Parent obj = new Example(); obj.display(); } }
这会生成一个编译时错误。输出如下-
Example.java:10: error: display() in Example cannot override display() in Parent void display() // trying to override display() ^ overridden method is static 1 error