一、接口

二、多态

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

2.1 类型转换

转换方式

  • 隐式 向上转型

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

规则

基本类型的转换

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

引用变量的类型转换

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

转换方式

向上转型

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

向下转型(唯一情况)

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

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

2.2 方法调用绑定

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

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

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

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

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

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

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

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

三、泛型

接口泛型

方法泛型

类泛型

泛型中的通配符

泛型中的限制

最新文章

  1. java自定义注解类
  2. Docker数据持久化与容器迁移
  3. Python GIL 多线程机制 (C source code)
  4. jquery 按钮效果 正常、移上、按下
  5. 搭建一个Flv视频播放服务器
  6. Centos 6.5系统下搭建Git服务器--失败历程
  7. LA 5061 LCA tarjan 算法
  8. C++primer 阅读点滴记录(一)
  9. 【转】M0,M1,M2,M3,M4基本概念
  10. [.Net MVC] 用户角色权限管理_使用CLK.AspNet.Identity
  11. Tinder 心动效果---卡片式view左右滑动
  12. MatLab实现FFT与功率谱
  13. 2019-04-16 SpringMVC 学习笔记
  14. msf中exploit的web_delivery模块
  15. shell 命令使用笔记
  16. 配置vim
  17. OK335xS canutils deal with compile error
  18. iOS静默推送(Silent Remote Notifications)
  19. IDEA 启动时,报“淇℃伅”的字符
  20. FFmpeg再学习 -- 硬件加速编解码

热门文章

  1. 局域网IP耗尽
  2. leetcode 40. 组合总和 II (python)
  3. activiti 流程发起人控制
  4. sqlalchemy批量添加数据-数据源是json(小算法)
  5. 阶段1 语言基础+高级_1-3-Java语言高级_06-File类与IO流_04 IO字节流_4_字节输出流写入数据到文件
  6. B-/B+树 MySQL索引结构
  7. STL 仿函数(函数对象)
  8. D-query SPOJ 树状数组+离线
  9. HDU 3228 题解(最小生成树)(Kruskal)(内有详细注释)
  10. 洛谷 - P3391 【模板】文艺平衡树(Splay) - 无旋Treap