如果父类方法访问修饰符为 private/final/static 则子类就不能重写该方法,但是被 static 修饰的方法能够被再次声明。
我寻思着static方法不是不能重写吗?于是做了如下实验:
class Base {
public static String staticBase() {
return "Base-staticBase()";
}
public String normal() {
return "Base-normal()";
}
}
class Son extends Base{
public static String staticBase() {
return "Son-staticBase()";
}
public String normal() {
return "son-normal()";
}
}
public class StaticTest {
public static void main(String[] args) {
Base son = new Son();
System.out.println(son.staticBase());
System.out.println(son.normal());
}
}
结果如下:
image.png
cglib动态代理不能代理被final,static修饰的方法,因为它的原理是通过继承该类来实现的
网友评论