java第三章多态
多态:
多态不仅可以减少代码量,还可以提高代码的扩展和可维护性
(通过一个方法可以对所有所需方法一个运用)多态具体表现多种形态能力的特征,同一个实现接口使用不同实例而执行不同的操作
实现多态的三个条件:
1.继承的存在(继承是多态的基础,没有继承就没有多态)
2.子类重写父类方法(多态下调用子类重写后的方法)
3.父类引用量指向子类对象(子类到父类的类型转换)向上转型
父类到子类的类型转换称为向下类型转换(强制类型转换)
向下类型转换
父类到子类的类型转换
当向上转型发生后,将无法调用子类特有的方法,当需要调用子类特有的方法时可以通过将父类再转换子类来实现(强制类型转换) 例:Hero hero = (Hero) person;(前面可以先判断person instanceof Hero)向下转型调用子类的特有方法:((Hero) person).方法名
向上类型转换 例:Person person = new Hero("","");
子类到父类的转换
特点:将一个父类的引用指向一个子类对象,成为向上转型(自动类型转换)
通过父类引用量调用的方法是子类覆盖或继承父类的方法,不是父类的方法(就是子类的方法,但是不包括子类特有的方法)
通过父类引用量无法调用子类特有的方法
instanceof
判断一个对象是否属于一个类或实现了接口,结果为布尔值,在强制类型转换之前通过instanceof运算符检查对象真实类型,在进行类型转换可避免类型转换异常
实现多态的2种方法:
使用父类作为方法形参(方法形参)实现多态(主要方法之一) public void feed(Person person){在新的类中添加}
使用父类作为方法返回值实现多态(在新的类中添加) public Person getPerson(int TypeId)


java第三章多态的更多相关文章
- “全栈2019”Java第三章:安装开发工具IntelliJ IDEA
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...
- Think in Java 第三章操作符
Think in Java 第三章操作符 赋值 对象赋值 我们真正操作的是对对象的引用.所以倘若"将一个对象赋值给另一个对象",实际上是将"引用"从一个地方 ...
- Java 第18章 多态
18 章 --> 多态 继承: extends 抽象类 abstract (限制类的实例化) 抽象方法 public abstract void show(); //抽象方法只有方法的声明,没 ...
- [Effective Java]第三章 对所有对象都通用的方法
声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...
- Java 第三章 选择结构
第三章 选择结构 if基本语法: if(条件){// 表达式 // 代码块 } eg: int a = 10; if(a > 1){ System.out.println("内容& ...
- Java OOP——第三章 多态
1.多态:(polymorphism): 是具有表现多种形态能力的特征: (专业化的说法:)同一个实现接口(引用类型),使用不同的实例而执行不同的操作 指一个引用(类型)在不同情况下的多种状态.也可以 ...
- [think in java] 第8章 多态
多态 "封装"通过合并特征和行为来创建新的数据类型. "多态"的作用则是消除类型之间的耦合关系. 方法调用绑定 定义:将一个方法调用同一个方法主题关联起来被称为 ...
- 自学Java第三章——《流程控制语句结构》
流程控制语句结构分为: 1.顺序结构:从上到下依次执行 2.分支结构:多个分支选择其中一个分支执行 3.循环结构:重复执行某些代码 3.1 顺序结构 执行过程:从上到下顺序执行 3.1.1 输出语句 ...
- 自动化测试selenium+java 第三章
import java.sql.Time;import java.util.concurrent.TimeUnit; import org.junit.BeforeClass;import org.o ...
随机推荐
- 【linux】之查看磁盘占用情况
查看整个硬盘使用情况: 1.df -h 2.du -bs xx 具体目录占用情况 3.查看当前目录大于100M的文件 find . -size +100M
- Access denied when I try to install profiler
I had the same issue and used the diagtool to find more information. The traces showed this error me ...
- 学习MeteoInfo二次开发教程(十二)
1.添加新的Form窗体: 在解决方案资源管理器中,右键MeteoInfoDemo,“添加”,“Windows 窗体” 2.新窗体中添加好layersLegend1和Layout之后,要把layers ...
- iOS移动开发CoreDate讲解
----欢迎------- 在移动端开发,数据持久化保存是基本要素,没钱在2014年之后退出了coredate,本持久化基于oc作为开发,方便程序人员操作.与SQL数据库,MySQL相比,优点颇多. ...
- php查询mysql数据库
1.连接数据库,写成一个php,其他文件直接include <?php $connect = mysql_connect("ip地址","用户",&quo ...
- Java异常处理——受控(checked)的异常(throws语句)
受控与不受控的异常 1.throws语句中声明的异常称为受控(checked)的异常,通常直接派生自Exception类. 2.RuntimeException(其基类为Exception) 和Err ...
- Python 编码的一些问题
>>> ord('中') 20013 >>> chr(65) 'A' >>> chr(20013) '中' - Python文件默认是UTF-8编 ...
- gentoo qt-creator no examples
参考 [SOLVED] qtcreator: examples are missing https://forums.gentoo.org/viewtopic-t-1092826-highlight- ...
- django2.0再写一行代码
基础 @LTS长期支持 @django-admin startproject xxx python manage.py runserver python manage.py startapp xxx ...
- Golang 包管理简介
Golang 包管理 在一个项目里,如果想引用本地包,经常会把新手搞的莫名其妙.这里通俗记录一下. 首先先要知道几个默认的规则 必须定义环境变量GOPATH,GOPATH可以定义多个目录 所有项目代码 ...