zoukankan      html  css  js  c++  java
  • Java面向对象(二) 接口、多态和泛型

    一、接口

    二、多态

    多态是同一个行为具有多个不同表现形式或形态的能力。

    2.1 类型转换

    转换方式

    • 隐式 向上转型
      • 对于基本数据类型,存储容量低的可自动向存储容量高的类型转换
      • 对于引用变量,子类可被转换为超类,可被赋给所属类实现的接口的引用
    • 显式 向下转型必须强制类型转换,是显示的 场合:赋值转换 方法调用转换 算术表达式转换 字符串转换

    规则

    基本类型的转换

    将值从一种类型转换成另一种类型

    引用变量的类型转换

    将引用转换为另一种类型的引用,不改变对象本身的类型

    转换方式

    向上转型

    • 转换为任何一个(直接或间接)超类的类型
    • 转换为对象所属的类(或其超类)实现的一个接口

    向下转型(唯一情况)

    • 被转为引用指向的对象的类型

    向上转型(当一个引用被转为其超类的引用)后,通过它能够访问的只有在超类中声明过的方法。

    2.2 方法调用绑定

    多态存在的三个必要条件:

    • 继承/接口实现
    • 重写/接口方法实现
    • 父类引用指向子类对象/接口类型的引用指向了一个实现此接口的对象,即向上转型

    简而言之,向上转型、继承、重写是三大前提条件

    将一个方法调用同一个方法主体关联起来被称作绑定。若程序执行前进行绑定(如果有的话,由编译器和连接程序实现),叫做前期绑定。在运行时根据对象的类型进行绑定,叫做后期绑定或动态绑定。

    在动态绑定中,对象中包含类的信息,编译器一直不知道对象的类型,但是方法调用机制能找到正确的方法体,并加以调用。

    Java中的多态是通过方法的动态绑定机制实现的

    只有普通方法调用可以是多态的,成员变量和静态方法都没有多态,直接访问某个域(成员变量),这个访问将在编译期进行解析,任何域访问操作都由编译器解析。

    因此将属性设为private,不可直接访问属性,这里带来了一个好处,就是可以避免误以为父类引用能多态的使用子类的属性。

    三、泛型

    接口泛型

    方法泛型

    类泛型

    泛型中的通配符

    泛型中的限制

  • 相关阅读:
    按位与、或、非、异或总结
    Linux 挂载命令
    Linux 文件系统常用命令
    Linux 系统命令sudo权限
    Linux 文件系统属性chattr权限
    Linux 文件特殊权限-Sticky BIT
    Linux 文件特殊权限-SetGID
    Linux 文件特殊权限-SetUID
    Linux 递归acl权限和默认acl权限
    Linux 最大有效权限与删除ACL
  • 原文地址:https://www.cnblogs.com/aidata/p/12047552.html
Copyright © 2011-2022 走看看