美文网首页
静态绑定(前期绑定) 与 动态绑定(后期绑定)

静态绑定(前期绑定) 与 动态绑定(后期绑定)

作者: 偷吃虾的猫 | 来源:发表于2020-07-26 19:42 被阅读0次

    绑定

      绑定指的是一个方法的调用与方法所在的类(方法主体)关联起来,绑定分为静态绑定(前期绑定) 和 动态绑定(后期绑定)


    静态绑定(前期绑定)

      静态绑定指的是在程序执行前就已经被绑定(编译过程就确定调用方法所属类)。
    注意:Java中,只有final、static、private 和 构造方法 是静态绑定

    • final : final修饰的方法可以被子类继承,但是不能被重写。子类也不能增加一个和父类final修饰一样的方法(编译会报错)。所以子类虽然可以调用该final修饰的方法,但其实调用的也是父类定义的final方法。因此使用final修饰的方法可以有效地关闭java的动态绑定
    • static:static修饰的方法可以被继承,但是不能被重写。虽然子类可以新建一个和父类定义为static方法一摸一样的方法。但是使用起来会有区别,子类对象上转型为父类对象时,不论子类有没有定义那个static方法,该对象调用的都是父类的静态方法。所以static修饰的方法在编译时就可以确定调用方法属于哪个类,也就是可以进行静态绑定
    • private:private修饰的方法不能被继承,既然不能被子类进行操作,想调用这个private方法,只能通过这个类自身的对象,所以private修饰的方法在编译时就可以进行静态绑定
    • 构造方法:这个就不解释了,构造方法是每个类独有的方法,所以肯定编译的时候就可以进行静态绑定

    动态绑定(后期绑定)

      动态绑定指定的是在运行时再决定这个方法由哪个对象调,这个过程就被成为动态绑定
    动态绑定的过程:

    • JVM寻找对象实际类型的方法表
    • JVM搜索方法签名
    • 调用方法

    参考链接:

    相关文章

      网友评论

          本文标题:静态绑定(前期绑定) 与 动态绑定(后期绑定)

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