Java基础知识总结--多态
面向对象编程的三大特性:封装、继承、多态
封装隐藏了类的内部实现机制,可以在不影响使用的情况下改变类的内部结构,同时也保护了数据,而外界而已它的内部细节是隐藏的,暴露给外界的只是它的访问方法。
继承是为了重用父类的代码,两个类若存在IS-A关系就可以使用继承,同时继承也为多态的实现做了铺垫。
多态指的是程序中定义的引用变量所指向的具体类型和通过该引用变量发出的方法调用在编程时并不确定,而是在程序运行期间才确定。即一个引用变量到底会指向那个类的实例对象,该引用变量发出的方法调用到底是那个类中实现的方法,必须在由程序运行期间才能确定。因为在程序运行时才确定具体是哪一个类,这样就不用修改程序代码,就可以让引用变量绑定到各种不同的类实现上,那么该引用所调用的具体方法随之而变,即不修改程序代码就可以改变程序运行时所绑定的具体代码,让程序可以选择多个运行状态,这就是多态性。
指向子类的父类引用由于向上转型了,所以它只能访问父类中拥有的方法和属性,而对于子类中存在的但是子类中不存在的方法,该引用是不能使用的,尽管是重载的方法也不行。若子类重写了父类中的某些方法,在调用这些方法的时候,一定是使用子类中重写的方法。
注意:
对于面向对象 而言,多态分为编译时多态和运行时多态。其中编译时多态是静态的,主要是指方法的重载,它是根据参数列表的不同来区分不同的函数,通过编辑之后就会变成两个不同的函数,这种情况称不上运行时编译。但是运行时多态 是动态的,它是通过动态绑定来实现的,也是我们说的多样性。
多态的实现
一、实现的三个必要条件:继承、重写、向上转型
继承:在多态中必须有继承关系的子类和父类。
重写:子类对父类中某些方法进行重写,再调用这些方法的时候就会调用子类的方法。
向上转型:在多态中需要将子类的对象赋给父类的引用,这样该引用才能够具备调用父类的方法和子类的方法的功能。
二、实现的形式:继承和接口。
基于继承实现的多态:基于继承的实现机制主要表现在父类和继承该父类的一个或者多个子类对某些方法的重写,多个子类对于统一方法的重写可以表现出不同的行为。
基于接口实现的多态:继承是通过重写父类的同一方法的几个不同子类来体现的,接口就是通过实现接口并覆盖接口中同一方法的几个不同类体现的。在接口的多态中,指向接口 的引用实例必须是实现了该接口的一个类的实例程序,在运行时,根据引用对象的实际类型来执行对应的方法。相对于继承来说具有更好的灵活性。
Java基础知识总结--多态的更多相关文章
- 第二十九节:Java基础知识-类,多态,Object,数组和字符串
前言 Java基础知识-类,多态,Object,数组和字符串,回顾,继承,类的多态性,多态,向上转型和向下转型,Object,数组,多维数组,字符串,字符串比较. 回顾 类的定义格式: [类的修饰符] ...
- Java 基础知识总结
作者QQ:1095737364 QQ群:123300273 欢迎加入! 1.数据类型: 数据类型:1>.基本数据类型:1).数值型: 1}.整型类型(byte 8位 (by ...
- Java基础知识回顾之七 ----- 总结篇
前言 在之前Java基础知识回顾中,我们回顾了基础数据类型.修饰符和String.三大特性.集合.多线程和IO.本篇文章则对之前学过的知识进行总结.除了简单的复习之外,还会增加一些相应的理解. 基础数 ...
- Java基础知识总结(超级经典)
Java基础知识总结(超级经典) 写代码: 1,明确需求.我要做什么? 2,分析思路.我要怎么做?1,2,3. 3,确定步骤.每一个思路部分用到哪些语句,方法,和对象. 4,代码实现.用具体的java ...
- 毕向东—Java基础知识总结(超级经典)
Java基础知识总结(超级经典) 写代码: 1,明确需求.我要做什么? 2,分析思路.我要怎么做?1,2,3. 3,确定步骤.每一个思路部分用到哪些语句,方法,和对象. 4,代码实现.用具体的java ...
- java基础知识-笔记整理
1.查看已安装jdk文件路径 CMD输入java -verbose. 2.java学习提升路线 java学习视屏地址: http://www.icoolxue.com/album/show/38 ...
- Java 基础知识总结1
作者QQ:1095737364 QQ群:123300273 欢迎加入! 1.数据类型: 数据类型:1>.基本数据类型:1).数值型: 1}.整型类型(byte 8位 (by ...
- java基础知识文章汇总
将之前的所有关于Java基础知识的随笔,整理成质量较高的十几篇随笔,几乎是好几篇比较零散的随笔合成现在的一篇,自认为还不错. java基础(一) 深入解析基本类型 java基础(二) 自增自减与贪心规 ...
- 沉淀,再出发:Java基础知识汇总
沉淀,再出发:Java基础知识汇总 一.前言 不管走得多远,基础知识是最重要的,这些知识就是建造一座座高楼大厦的基石和钢筋水泥.对于Java这门包含了编程方方面面的语言,有着太多的基础知识了,从最初的 ...
随机推荐
- 监控宝设置snmp
https://wiki.jiankongbao.com/doku.php/%E6%96%87%E6%A1%A3:snmp%E8%AF%8A%E6%96%AD
- Angularjs 学习笔记-2017-02-05-初识Angular及app、model、controller、repeat指令和fileter、orderBy
ng-app 定义作用域,从作用域处开始执行ng命令指令 ng-model 数据绑定字符,用于双向数据绑定 ng-controller ng控制台,定义function name($scope)来 ...
- Java基础知识➣Stream整理(二)
概述 在Java数据流用到的流包括(Stream).文件(File流)和I/O流 ,利用该三个流操作数据的传输. Java控制台输入输出流 读取控制台使用数据流: BufferedReader和Inp ...
- shell常用监控脚本
1.cpu空闲脚本 top -b -n1 |grep 'Cpu'|awk '{print $5}'|sed 's/%//'|sed 's/id,//' 变量赋值 cpu_id='top -b -n1 ...
- CentOS7.5安装nodejs 转
CentOS7.5安装nodejs CentOS安装NodeJS 在CentOS下安装NodeJS有以下几种方法.使用的CentOS版本为7.2.CentOS其他版本的NodeJS安装大同小异,也可以 ...
- Python Web开发问题收集(二)
- Codeforces 542A Place Your Ad Here
Place Your Ad Here 把没用的第一类区间去掉之后, 排序, 然后枚举第二类区间, 在上面死命二分就好了. #include<bits/stdc++.h> #define L ...
- php5.6安装redis各个版本地址集合
igbinary扩展 http://windows.php.net/downloads/pecl/releases/igbinary/2.0.1/ redis扩展 http://windows.php ...
- 010 异步处理Rest服务
一:任务 1.任务 使用Runnable异步处理Rest服务 使用DefaultResult异步处理Rest服务 异步处理的配置 2.原理图说明 二:Callable进行异步处理 1.程序 新建一个a ...
- bind注意事项(传引用参数的时候)
默认情况下,bind的那些不是占位符的参数被拷贝到bind返回的可调用对象中. 当需要把对象传到bind中的参数中时,需要使用ref或者cref. 例如: #include<iostream&g ...