Java final static

  

 

 

 

idea 错误提示

 

 

@Override 重写方法的目的是为了多态, 重写是实现多态的前提, 即重写是发生于继承且针对非static方法

语法上子类允许出现和父类只有方法体不一样的static方法, 但语法上static支持重写, 但是运行上达不到多态

 

 

 

a的编译类型为 父类A, 运行类型为 子类B, a调用static方法时, 是依据编译类型, 没有多态

 

当定义方法为static final时

 

 

When a static method is overriden in a subclass it can still be accessed via the superclass making the final declaration not very necessary. Declaring a static method final does prevent subclasses from defining a static method with the same signature.

将一个static方法声明为final是不必要的, 声明为final可以阻止子类定义相同签名的static方法

 

 

static方法属于类, static方法无this隐式参数, 可以使用类名直接调用static方法

方法被声明为static:

  1. 无需访问对象
  2. 只需要访问类的static域

 

static方法不能被Override,但是可以被子类相同signature的方法hide,子类的static方法不是Override,而是hide, 如果在子类中直接调用该static方法,会调用子类重新定义的,而不是父类的,而父类定义为 static final

final会阻止隐藏, 故子类重新定义static方法会报错

posted @ 2021-07-07 10:52  ascertain  阅读(65)  评论(0编辑  收藏  举报