zoukankan      html  css  js  c++  java
  • Java学习第15天

    一、今日学习多态变化。

    1、java中多态的实现:主要体现在方法的重载和覆盖上。

    多态定义:多态是面向对象编程语言的重要特性,它允许基类的指针或引用指向派生类的对象,而在具体访问时实现方法的动态绑定。Java 对于方法调用动态绑定的实现主要依赖于方法表,但通过类引用调用(invokevitual)和接口引用调用(invokeinterface)的实现则有所不同。、

    2、类型转型:

        向上转型:

                  父类 对象=new 子类()

        向下转型;

                  父类 对象1=new 子类()

                  子类 对象2=(子类)对象

    多态的作用:消除类型之间的耦合关系。

    多态存在的三个必要条件
    一、要有继承;
    二、要有重写;
    三、父类引用指向子类对象。

    3、动态绑定与静态绑定:

    (1)动态绑定:在运行时根据具体对象的类型进行绑定。若一种语言实现了后期绑定,同时必须提供一些机制,可在运行期间判断对象的类型,并分别调用适当的方法。也就是说,编译器此时依然不知道对象的类型,但方法调用机制能自己去调查,找到正确的方法主体。不同的语言对后期绑定的实现方法是有所区别的。但我们至少可以这样认为:它们都要在对象中安插某些特殊类型的信息。

    动态绑定的过程:

    1. 虚拟机提取对象的实际类型的方法表;
    2. 虚拟机搜索方法签名;
    3. 调用方法。

    实现多态的技术称为:动态绑定(dynamic binding),是指在执行期间判断所引用对象的实际类型,根据其实际的类型调用其相应的方法。

    (2)静态绑定:在程序执行前方法已经被绑定(也就是说在编译过程中就已经知道这个方法到底是哪个类中的方法),此时由编译器或其它连接程序实现。针对java,可以简单的理解为程序编译期的绑定;这里要特别说明一点,java当中的方法只有final,static,private和构造方法是前期绑定。

    差别:其实上述解释可以看出很多东西了。
    (1)静态绑定发生在编译时期,动态绑定发生在运行时
    (2)使用private或static或final修饰的变量或者方法,使用静态绑定。而虚方法(可以被子类重写的方法)则会根据运行时的对象进行动态绑定。
    (3)静态绑定使用类信息来完成,而动态绑定则需要使用对象信息来完成。
    (4)重载(Overload)的方法使用静态绑定完成,而重写(Override)的方法则使用动态绑定完成。

    二、遇到的问题:

    动态绑定和

  • 相关阅读:
    Python语言程序设计(1)--实例1和基本知识点
    前端学习笔记--函数
    知乎推荐书籍整理
    第六周周总结
    第五周总结
    第四周周总结
    第三周周总结
    第二周总结
    第一周总结
    项目目标
  • 原文地址:https://www.cnblogs.com/zyljal/p/13352020.html
Copyright © 2011-2022 走看看