Java中,static方法是属于类的方法不是属于某个实例的方法,像static变量一样是类所共有的,在权限允许的范围内可以直接通过“类名.方法名(static方法名)”调用。
Java中的static方法是不能被子类重写的或者被子类覆盖的,因为即使被覆盖也不会实现多态的功能,所以static方法不是能不能重写,而是不根本无法实现static方法重写。
下面是测试代码:
package com.example.log.test;
/**
* Created with Intellij IDEA
* User : chenming
* Date : 2018-09-05
* Time : 18:07
* Description : **
**/
public class A {
public static void staticMethod() {
System.out.println("父类static方法!");
}
public void NoStaticMethod() {
System.out.println("父类非静态方法,父类的普通方法!");
}
}
package com.example.log.test;
/**
* Created with Intellij IDEA
* User : chenming
* Date : 2018-09-05
* Time : 18:09
* Description : **
**/
public class B extends A {
public static void staticMethod() {
System.out.println("子类静态方法!");
}
public void NoStaticMethod() {
System.out.println("子类非静态方法!");
}
}
package com.example.log.test;
/**
* Created with Intellij IDEA
* User : chenming
* Date : 2018-09-05
* Time : 18:13
* Description : **
**/
public class StaticMethodTest {
public static void main(String[] args) {
A a = new A();
A b = new B();
A.staticMethod();
a.staticMethod();
a.NoStaticMethod();
B.staticMethod();
b.staticMethod();
b.NoStaticMethod();
}
}
父类static方法!
父类static方法!
父类非静态方法,父类的普通方法!
子类静态方法!
父类static方法!
子类非静态方法!