关于子类Sub继承父类Base:
子类可以定义同父类的静态方法同名的静态方法,以便在子类中隐藏父类的静态方法。编译时,子类定义的静态方法也必须满足和方法覆盖类似的约束。
方法的参数签名一致
返回类型一致
不能缩小父类方法的访问权限
不能抛出更多的异常
子类隐藏父类的静态方法,子类覆盖父类的实例方法 ----运行时,Java虚拟机把静态方法和所属的类绑定,把实例方法和所属的实例绑定。
例子:
package com.snape.java.extendsDemo; public class Test { public static void main(String[] args) { Sub sub1 = new Sub(); //引用子类Sub实例 sub1.method(); //打开子类实例方法 sub1.staticMethod(); //打开子类静态方法 Base base1 = new Sub(); //声明为Base类型,引用Sub实例 base1.method(); base1.staticMethod(); } }
结果:
父类的非静态方法不能被子类覆盖为静态方法.
父类的private方法不能被子类覆盖 ------- 子类方法覆盖父类方法的前提是:子类必须能继承父类的特定方法,否则之间没有覆盖关系.