4、多态

多态概念(一共三点满足就行)

1、 继承

2、程序运行时将子类对象赋值给父类

3、通过父类去调用子类的方法

一、父类类型做方法的参数

  1. <span class="kwd">public<span class="pln"> <span class="kwd">class<span class="pln"> <span class="typ">Person<span class="pln"> <span class="pun">{</span></span></span></span></span></span></span>
  2. <span class="com">// //&#x4EBA;&#x5582;&#x52A8;&#x7269;</span>
  3. <span class="com">// public void feed(Dog dog) {</span>
  4. <span class="com">// dog.eat();</span>
  5. <span class="com">// }</span>
  6. <span class="com">// </span>
  7. <span class="com">// public void feed(Cat cat) {</span>
  8. <span class="com">// cat.eat();</span>
  9. <span class="com">// }</span>
  10. <span class="pln"> <span class="kwd">public<span class="pln"> <span class="kwd">void<span class="pln"> feed<span class="pun">(<span class="typ">Animal<span class="pln"> animal<span class="pun">)<span class="pln"> <span class="pun">{</span></span></span></span></span></span></span></span></span></span></span>
  11. <span class="pln"> animal<span class="pun">.<span class="pln">eat<span class="pun">();</span></span></span></span>
  12. <span class="pln"> <span class="pun">}</span></span>
  13. <span class="pun">}</span>

二、多态父类类型做返回值 简单工厂

4、多态

缺点:破坏了开闭原则:对功能的扩展开放,对修改关闭(扩展功能的时候尽量不用动已经写好的代码)

三、类型转换

向上转型:子类转向父类

Animal animal = new Cat();animal.eat();

向下转型:父类转向子类(强制转换,假转)

//     向下转型(父类向子类转型)        Animal animal1=new Animal();        Cat cat1 = new Cat();        Dog dog=new Dog();//        真转是会运行报错的//        cat1= (Cat) animal1;//        假转就不会报错,什么是假转?就是先把子类转向父类,那父类就可以强制转换成子类//        animal1=cat1;//        cat1= (Cat) animal1;//        cat1.run();//        向下转型假转,主要应用是去调用子类中特有的方法

instanceof关键字:判断是不是类型是否相等,相等返回true

equals方法重写的解读,要学会看懂什么意思

4、多态

Original: https://www.cnblogs.com/hxbhxb/p/15480701.html
Author: 金涛骇浪
Title: 4、多态

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/575236/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 中小企业的福音来咯!JNPF渐火,助力业务数字化升级

    引言 随着大数据时代的到来,企业业务数字管理越来越受到企业管理人员的重视。而企业如果想要实现数字化管理的话,就需要有拥有一套能够将各环节业务相串联起来的数字化平台应用系统。以此实现…

    Java 2023年6月5日
    078
  • JVM内存结构–新生代及新生代里的两个Survivor区(下一轮S0与S1交换角色,如此循环往复)、常见调优参数

    一、为什么会有年轻代 我们先来屡屡,为什么需要把堆分代?不分代不能完成他所做的事情么?其实不分代完全可以,分代的唯一理由就是优化GC性能。你先想想,如果没有分代,那我们所有的对象都…

    Java 2023年6月13日
    0100
  • 生成一个session id

    var genSessionId = function(length){ var str = genSessionId.characters; if ( !"0&quot…

    Java 2023年5月30日
    096
  • 设计模式之二策略模式(java实现)

    策略模式的实际应用就是消除代码块中的if else语句,这个时候就有人说了,if else挺好的啊,写代码本来就是if else的逻辑判断,处理业务 写小项目没问题,但是那种大型的…

    Java 2023年6月6日
    0106
  • javase集合 温故而知新

    重温javase集合 前言:1、为什么要有集合?数组长度需要在初始化时确定大小,数据结构单一、因此集合出现了 2、数组和集合的区别区别一:数组既可以存储基本数据类型,又可以存储引用…

    Java 2023年6月16日
    071
  • 3.Spring IoC阐述

    控制反转的概念:控制反转是一种通过描述(在Java中可以是XML或者注解)并通过第三方去产生或获取特定对象的方式. 在Spring中实现控制反转的是IOC容器,其实现方法是依赖注入…

    Java 2023年6月9日
    088
  • Hive数据仓库工具基本架构和入门部署详解

    @ 概述 定义 本质 特点 Hive与Hadoop关系 Hive与关系型数据库区别 优缺点 其他说明 架构 组成部分 数据模型(Hive数据组织形式) Metastore(元数据)…

    Java 2023年6月5日
    073
  • 微服务SpringCloud之zipkin链路追踪

    随着业务发展,系统拆分导致系统调用链路愈发复杂一个前端请求可能最终需要调用很多次后端服务才能完成,当整个请求变慢或不可用时,我们是无法得知该请求是由某个或某些后端服务引起的,这时就…

    Java 2023年5月30日
    075
  • Spring Cloud Alibaba 最新版发布!

    大家好,我是栈长。 时隔大半年多,Spring Cloud Alibaba 2021.x 终于发布最新版本了,感谢这位粉丝的通知: 最新版本为 2021.0.4.0,上一个版本还是…

    Java 2023年6月15日
    084
  • Spring Boot 统一参数校验、统一异常、统一响应,这才是优雅的处理方式!

    前言 本篇主要要介绍的就是 controller层的处理,一个完整的后端请求由4部分组成: &#x63A5;&#x53E3;&#x5730;&#x5…

    Java 2023年5月29日
    0103
  • 方法

    一.方法定义格式及格式解释 假设有一个游戏程序,程序在运行过程中,要不断地发射炮弹(植物大战僵尸)。 发射炮弹的动作需要编写100行的代码,在每次实现发射炮弹的地方都需要重复地编写…

    Java 2023年6月5日
    099
  • 11.如何把一段逗号分隔的字符串转换为一个数组

    split public class DouHaoShuZuFenGe { public static void main(String[] args) { String orgS…

    Java 2023年6月9日
    086
  • 5-多线程

    一、创建多线程的四种方式 1.方式一:继承Thread类的方式 创建一个继承于Thread类的子类 重写Thread类的run() –> 将此线程执行的操作声明在…

    Java 2023年6月7日
    0103
  • MQTT 协议基本介绍

    MQTT 全称为 Message Queuing Telemetry Transport(消息队列遥测传输)是一种基于发布/订阅范式的”轻量级”消息协议,由…

    Java 2023年5月30日
    099
  • Day9

    package array;public class ArrayDemo1 { //变量类型 变量的名字 = 变量的值 //数组类型 public static void main…

    Java 2023年6月5日
    059
  • 1.20(设计模式)模板模式

    模板模式,定义了一个模板,模板内容通过子类实现模板的抽象方法去添加。 就类似学校需要建一个新校区,新校区有多栋宿舍,找了多个施工方,每个施工方负责一栋宿舍楼。 各个施工方都有自己的…

    Java 2023年6月8日
    0168
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球