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 ...
随机推荐
- maven向本地仓库导入jar包
如果maven工程的依赖jar包在网上找不到,那么只能自己打包,然后传到本地仓库,可以使用如下命令 mvn install:install-file -DgroupId=com.redis.redis ...
- spring4学习笔记
IOC public class IServiceImpl implements IService { public void IserviceImpl(){} @Override public vo ...
- 安装部署Kafka集群
kafka是一个开源的分布式消息订阅系统(消息中间件) 安装过程 1.下载kafka_2.11-0.10.1.0.gz(ps:千万不要下错了,博主就是下到了src文件上去了,kafka中的zookee ...
- 研究并尝试改进Vyeshal
我想研究Vyeshal,这样就不可避免的要用到游戏中的语音.然而游戏内的语音文件是.bank类型的,如何转化为可听文件是个问题.
- 取消win10 任务栏已固定的软件
通过组策略编辑器 设置为“已禁用”,就可 ,自由取消已固定的图标.
- (转)Windows下cmd nginx的启动,重启,关闭功能
转自:http://www.cnblogs.com/derekchen/archive/2011/02/17/1957209.html cls @ECHO OFF SET NGINX_PATH=D:\ ...
- js 连接mqtt
js连接mqtt 项目中要用到mqtt,前端调用,使用github开源的paho-mqtt.js,api还是挺全面的,网上各种教程很全面,但是感觉代码过于杂乱,故而封装的一下.仿jquery ajax ...
- Linux充电站
[Ansible中文权威指南] [鸟哥的linux私房菜] AWK使用手册 Centos的epel源下载 Ceph国内社区 chef简明手册 ChinaUnix运维文库 Confluence和Jira ...
- ThreadLocal 原理及一些实现
ThreadLocal = TL 网上讲TL原理很多,我大概说下自己的理解 TL其实是不是有点像全局的配置中心,static ConcurrentHashMap<Thread,value> ...
- 在Kali Linux中下载工具Stegsolve
关键字:Java,Stegsolve,Write Up 一.首先需要配置Java环境. 1.下载最新的Java JDK. 注意选择Accept License Agreement,并下载.tar.gz ...