当前位置: 首页 > news >正文

2020-12-02

Java多态

怎么理解Java中的多态

多态用大白话讲其实就是将子类对象当做父类来看待。
程序中的说法是将父类引用指向子类对象,从而实现多种形态。

我们先来看一个例子
Animal a = new Dog();
其实我们正常都是写Animal a = new Animal();为什么可以写成上面的例子就是多态。

(父类变量 父类引用) Animal a = new Dog();(子类对象)
Dog 继承Animal 是Animal的一个子类,我们将子类创建的对象赋值给了父类的变量
可以写Animal a = new Dog();z之所以这样写是因为两者之间具有直接或者间接的继承关系,父类引用可以指向子类对象,既形成了多态。我们在实例化的时候子类Dog可是多个,可以是cat,fish等等
逻辑上Dog is a Animal这个是正确的
语法上是自动类型转换(因为Animal 比Dog描述的更宽泛,更广)
short a = 19;
int num =a;
short 是两个字节的,而我们的int是4个字节。四个字节包含两个字节,四个字节比两个字节更宽泛,这样的转换我们称之为自动类型转换,也叫向上转换。
当我们用这个Animal a = new Dog();的时候a只能引用父类所申明的方法和属性,如果非要引用子类的方法的话,那就用到向下转换,

Animal a = new Dog();
Dog dog =(Dog)a ;
// 这个时候a再去调用的话就可以调用到Dog里面的子类方法了

子类重写父类的方法用到
@override
public void eat(){
System.out.print(“这个方法被重写了,如果要被调用的时候会先调用重写的方法。”)

}

第一个场景
使用父类作为方法形参实现多态,使方法参数类型更为宽泛

public class Master(){
	String name;
	public void feed(Animal animal){
		System.out.print(this.name+"喂食");
		animal.eat();
}
}

场景二
使用父类作为方法的返回值实现多态,使方法可以返回不同子类对象

相关文章:

  • 比较三个数字,求出最大值
  • Scanner限制次数猜数字
  • ArrayList,随机抽取6个数字在【1-33】中的随机数,并且遍历
  • 利用ArrayList遍历集合
  • 用一个大集合存入20个随机数字,然后筛选其中的偶数元素,放到小集合中
  • String的用法截取,转换,切割
  • 由{1,2,3}转换成[word1#word2#word3#]]
  • 统计大写小写数字和其他字符串
  • static的用法静态方法的注意事项
  • Static的补充
  • Arrays的补充
  • Arrays的使用
  • Math的使用。
  • 抽象类的说明及使用
  • 继承的综合案例
  • 《深入 React 技术栈》
  • CNN 在图像分割中的简史:从 R-CNN 到 Mask R-CNN
  • CSS3 聊天气泡框以及 inherit、currentColor 关键字
  • ECMAScript 6 学习之路 ( 四 ) String 字符串扩展
  • Electron入门介绍
  • HTML-表单
  • iOS动画编程-View动画[ 1 ] 基础View动画
  • JS正则表达式精简教程(JavaScript RegExp 对象)
  • Making An Indicator With Pure CSS
  • MySQL主从复制读写分离及奇怪的问题
  • overflow: hidden IE7无效
  • python 学习笔记 - Queue Pipes,进程间通讯
  • 番外篇1:在Windows环境下安装JDK
  • 码农张的Bug人生 - 初来乍到
  • 什么是Javascript函数节流?
  • 双管齐下,VMware的容器新战略
  • 验证码识别技术——15分钟带你突破各种复杂不定长验证码
  • 一些关于Rust在2019年的思考
  • #define与typedef区别
  • #Linux(权限管理)
  • #LLM入门|Prompt#1.8_聊天机器人_Chatbot
  • #pragma once
  • (10)Linux冯诺依曼结构操作系统的再次理解
  • (4) openssl rsa/pkey(查看私钥、从私钥中提取公钥、查看公钥)
  • (4.10~4.16)
  • (C语言)球球大作战
  • (八十八)VFL语言初步 - 实现布局
  • (附源码)php投票系统 毕业设计 121500
  • (附源码)springboot 房产中介系统 毕业设计 312341
  • (九)One-Wire总线-DS18B20
  • (最全解法)输入一个整数,输出该数二进制表示中1的个数。
  • **CI中自动类加载的用法总结
  • .net 流——流的类型体系简单介绍
  • .net对接阿里云CSB服务
  • .NET开发者必备的11款免费工具
  • [ 代码审计篇 ] 代码审计案例详解(一) SQL注入代码审计案例
  • [2016.7 day.5] T2
  • [2019.3.20]BZOJ4573 [Zjoi2016]大森林
  • [2021 蓝帽杯] One Pointer PHP
  • [2024最新教程]地表最强AGI:Claude 3注册账号/登录账号/访问方法,小白教程包教包会