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

来源:互联网 发布:仿没内涵网源码模板 编辑:程序博客网 时间:2024/06/07 19:26
多态是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中是通过动态绑定来实现多态的。







原创粉丝点击