多态:

多态不仅可以减少代码量,还可以提高代码的扩展和可维护性

(通过一个方法可以对所有所需方法一个运用)多态具体表现多种形态能力的特征,同一个实现接口使用不同实例而执行不同的操作

实现多态的三个条件:

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第三章多态的更多相关文章

  1. “全栈2019”Java第三章:安装开发工具IntelliJ IDEA

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...

  2. Think in Java 第三章操作符

    Think in Java 第三章操作符 赋值 对象赋值 ​ 我们真正操作的是对对象的引用.所以倘若"将一个对象赋值给另一个对象",实际上是将"引用"从一个地方 ...

  3. Java 第18章 多态

    18 章  --> 多态 继承: extends 抽象类 abstract (限制类的实例化) 抽象方法 public abstract void show(); //抽象方法只有方法的声明,没 ...

  4. [Effective Java]第三章 对所有对象都通用的方法

    声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...

  5. Java 第三章 选择结构

    第三章   选择结构 if基本语法: if(条件){// 表达式 // 代码块 } eg: int a = 10; if(a > 1){ System.out.println("内容& ...

  6. Java OOP——第三章 多态

    1.多态:(polymorphism): 是具有表现多种形态能力的特征: (专业化的说法:)同一个实现接口(引用类型),使用不同的实例而执行不同的操作 指一个引用(类型)在不同情况下的多种状态.也可以 ...

  7. [think in java] 第8章 多态

    多态 "封装"通过合并特征和行为来创建新的数据类型. "多态"的作用则是消除类型之间的耦合关系. 方法调用绑定 定义:将一个方法调用同一个方法主题关联起来被称为 ...

  8. 自学Java第三章——《流程控制语句结构》

    流程控制语句结构分为: 1.顺序结构:从上到下依次执行 2.分支结构:多个分支选择其中一个分支执行 3.循环结构:重复执行某些代码 3.1 顺序结构 执行过程:从上到下顺序执行 3.1.1 输出语句 ...

  9. 自动化测试selenium+java 第三章

    import java.sql.Time;import java.util.concurrent.TimeUnit; import org.junit.BeforeClass;import org.o ...

随机推荐

  1. 【kubenetus】kubenetus运维

    重启K8S服务 systemctl stop kubelet systemctl stop kube-apiserver systemctl stop kube-proxy systemctl sto ...

  2. [UE4]镜像

    一.这是一个右手模型,通过镜像可以得到一个左右模型. 二.通过上图分析,镜面是X轴和Z轴形成的一个面,Y轴与XZ面垂直,因此就是镜像Y轴,将模型的Transform.Scale.Y设置为-1,即可得到 ...

  3. win10家庭版,双击bat文件无法运行(double click bat file does not execute)

    win10家庭版,双击bat文件无法运行,弹出文件打开方式选择框. 在网上搜索处理办法,试了以下方法1-5都没有成功,用方法6规避. 方法1:打开一个驱动器,点“工具-文件夹选项→文件类型→新建→扩展 ...

  4. JeeCMS v7 SSRF导致任意文件写入

    前言: 学习大佬的思路. from先知社区:https://xz.aliyun.com/t/4809 00X1: 是/ueditor/getRemoteImage.jspx 接口 通过构造upfile ...

  5. 使用原生JDBC循环读取文件并持久化到数据库

    先上代码: package com.demo.common.service; import java.io.File; import java.io.FileInputStream; import j ...

  6. 转载一份kaggle的特征工程:经纬度、特征构造、转化率

    转载:https://www.toutiao.com/i6642477603657613831/ 1 如果训练/测试都来自同一时间线,那么就可以非常巧妙地使用特性.虽然这只是一个kaggle的案例,但 ...

  7. Navicat premium 12破解版

    下载Navicat  Premium 12和破解补丁Navicat_Keygen_Patch,底部有下载地址.下载之后安装Navicat,安装成功后先不要打开,然后打开破解补丁,破解补丁不需要安装,双 ...

  8. 转:VB.NET Office操作之Word

    在这里给出了一个Word操作的类,该类具备了对word 文档操作的基本功能,包括word 文档的新建,打开,保存,另存,插入图片,插入表格,插入文字,读取文字,定位光标位置,移动光标,移动到指定页等等 ...

  9. scheduleAtFixedRate 与 scheduleWithFixedDelay 的区别

    总结: scheduleAtFixedRate ,是以上一个任务开始的时间计时,period时间过去后,检测上一个任务是否执行完毕,如果上一个任务执行完毕,则当前任务立即执行,如果上一个任务没有执行完 ...

  10. 七层协议&网络配置

    1.输入CMD 2.ipconfig-all 可查看详细的电脑网络配置,子网掩码(subnet mask)又叫网络掩码.地址掩码.子网络遮罩,它是一种用来指明一个IP地址的哪些位标识的是主机所在的子网 ...