java中多态的一些缺陷以及方法调用绑定

xiaoxiao2021-02-28  98

多态是java的三大特性之一,但是只能针对一般的方法,对有些特殊情况还是不能够实现的。主要有是包括:私有方法,域和静态方法。 package polymorphism; public class Sub extends Super { public int i = 2; //静态方法 public static void staticMethod() { System.out.println("Sub static method"); } //私有方法 编译器会报错 // private void privateMethod() { // System.out.println("Sub private method "); // } public void normalMethod() { System.out.println("Sub normalMethod"); } public static void main(String[] args) { Super sup = new Sub(); //获取域 System.out.println("i = " + sup.i ); //调用静态方法 Super.staticMethod(); //私有方法不能被调用 sup.privateMethod(); //正常方法 sup.normalMethod(); } } class Super { //域 public int i = 1; //静态方法 public static void staticMethod() { System.out.println("Super static method"); } //将会被私有的方法 public void privateMethod() { System.out.println("Super private method "); } public void normalMethod() { System.out.println("Super normalMethod"); } }

为什么为造成这样的结果呢?让我直接就想到了方法的绑定机制。

绑定:将一个方法调用同一个方法的主体则称为绑定。绑定分为两种前期绑定和后期绑定(动态绑定、运行期绑定),java中除了static和final方法之外其余的都是后期绑定;java中是通过动态绑定来实现多态的。

转载请注明原文地址: https://www.6miu.com/read-39100.html

最新回复(0)