首页 > 代码库 > 有关java中static关键的重写问题
有关java中static关键的重写问题
《Java编程思想》中这样提到“只有普通的方法调用可以是多态的”。说白了,就是静态方法不能实现重写这种多态。
JAVA静态方法形式上可以重写(只要子类不加@Override关键字修饰的话,即可编译通过),但从本质上来说不是JAVA的重写。因为静态方法只与类相关,不与具体实现相关,声明的是什么类,则引用相应类的静态方法(本来静态无需声明,可以直接引用),看下例子:
Java代码
- class Base{
- static void a( ){System.out.println("A"); }
- void b( ){System.out.println("B"); }
- }
- public class Inherit extends Base{
- static void a( ){System.out.println("C"); }
- void b( ){System.out.println("D"); }
- public static void main(String args[]){
- Base b=new Base();
- Base c=new Inherit();
- b.a();
- b.b();
- c.a();
- c.b();
- }
- }
class Base{ static void a( ){System.out.println("A"); } void b( ){System.out.println("B"); }}public class Inherit extends Base{ static void a( ){System.out.println("C"); } void b( ){System.out.println("D"); } public static void main(String args[]){ Base b=new Base(); Base c=new Inherit(); b.a(); b.b(); c.a(); c.b(); }}
以上输出的结果是:A B A D 非静态方法 按重写规则调用相应的类实现方法,而静态方法只与类相关。
有关java中static关键的重写问题
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。