美文网首页
java中静态成员变量和静态方法继承详解

java中静态成员变量和静态方法继承详解

作者: AlanSun2 | 来源:发表于2019-04-17 16:18 被阅读0次

以下是通过实际操作得出的结论,欢迎指正:

  1. 接口:
    1.1. 接口之间继承,静态方法无法继承,接口静态方法的调用只能通过原接口调用
    1.2. 接口之间继承,接口的静态成员变量和静态方法都可以被重写,重写后就算出现1.4的情况也没问题
    1.3. 接口之间单继承(例如:接口 A extends 接口 B),则所有成员变量都会被继承
    1.4. 接口之间多继承(例如:接口 A extends 接口 B, C),如果B,C中有相同的成员变量 a ,则会出现歧义,编译报错
    1.5. 接口的静态成员变量可以被子类(不是接口)继承和重写,静态方法只能被重写。(这一条只仅对单个接口有效)
    1.6. 接口中的default方法可以被继承和重写。(这一条只仅对单个接口有效)
  2. 类/抽象类
    2.1. 类与类之间的继承,静态成员变量和静态方法都是可以被继承和重写
    2.2. 普通类/抽象类 implements 单接口,会继承静态成员变量,静态方法不会被继承,接口静态方法的调用只能通过原接口调用
    2.3. 普通类/抽象类 implements 多接口,首先它满足2.2。如果有相同的成员变量或相同的default方法,编译报错
    2.4. C类实现了接口A、B,如果A、B中有两个相同的default方法,编译会报错。

总结

接口的静态方法的调用都要通过原接口调用,而类中的静态方法会被继承可以用子类调用。


特例,如果实现类实现了A,B,且A和B中有相同的静态方法或静态成员变量,则实现类无法调用父类中静态方法或静态成员变量。因为java无法判断出该调用哪一个方法(至少现在不支持这种写法)。

为什么接口中的变量必须是static的?
答:因为接口不能实例化,访问的唯一方式就是接口名,因此如果有变量必须是static的。

为什么接口中的变量一定要初始化?
答:因为变量是final修饰的,如果不初始化就没有意义了。

类的静态成员会随某一个静态成员的被使用或类的实例化而被初始化。

相关文章

  • java三大特性

    继承性 extends继承 Java支持单继承,子类得到父类的成员变量和成员方法,(但不包括静态方法和构造方法)...

  • 继承过程中的 重写与隐藏

    结论 静态的成员变量/方法、非静态的成员变量/方法都可以被 继承。 只有非静态的方法才可以被重写。 静态的成员变量...

  • java中静态成员变量和静态方法继承详解

    以下是通过实际操作得出的结论,欢迎指正: 接口:1.1. 接口之间继承,静态方法无法继承,接口静态方法的调用只能通...

  • java语言static

    Java中的静态方法static 1、static表示“全局”或者“静态”的意思,用来修饰成员变量和成员方法,也可...

  • kotlin真的没有静态成员变量的吗?

    kotlin是如何改造静态成员变量与静态方法的? 在java中,定义一个静态成员变量用static关键字即可。静态...

  • static关键字

    在静态方法中不能访问类的非静态成员变量和非静态成员方法,因为非静态成员方法/变量都是必须依赖具体的对象才能够被调用...

  • ts 类的变量、方法、实例化、继承、实现接口、抽象类

    1. 类的成员变量、成员方法,静态变量、静态方法、构造函数、实例化对象 2. 类的继承 1.单继承 2.多继承 需...

  • java学习4/11

    局部变量和成员变量的区别 Java中的static使用 Java中的静态内部类 Java中继承的初始化顺序 Jav...

  • 四、JNI-成员和方法

    成员 方法 #1. 成员 Java中成员变量分为普通成员变量和静态成员变量。普通成员变量也称为类实例成员变量,所有...

  • java中的静态属性与静态方法可以被继承么

    java中的静态属性与静态方法可以被继承么 结论: java中静态属性和静态方法可以被继承,但是没有被重写(ove...

网友评论

      本文标题:java中静态成员变量和静态方法继承详解

      本文链接:https://www.haomeiwen.com/subject/etpnwqtx.html