首页 > 编程语言 >Java三大特性之--多态基础

Java三大特性之--多态基础

时间:2023-08-09 21:11:58浏览次数:35  
标签:调用 Java -- 子类 cry 多态 Cat animal 类型

半年前学的已经忘了,现在来复习一下。。。

1、多态的一个小例子

 

public class PolyObject {
public static void main(String[] args) {
//体验对象多态特点
//animal 编译类型就是 Animal , 运行类型 Dog
Animal animal = new Dog();
//因为运行时 , 执行到改行时,animal 运行类型是 Dog,所以 cry 就是 Dog 的 cry
animal.cry(); //小狗汪汪叫
//animal 编译类型 Animal,运行类型就是 Cat
animal = new Cat();
animal.cry(); //小猫喵喵叫
}
}

在这个例子中,cat和dog都继承了animal类,并且这三个类中都有各自的cry()方法

但是在运行的时候,我们将

Animal animal = new Dog();
然后执行animal.cry();

那么,在这里,将执行dog.cry()

因为运行类型是dog,编译类型是animal。

2、向上转型和向下转型

 

/向上转型调用方法的规则如下: //(1)可以调用父类中的所有成员(需遵守访问权限) //(2)但是不能调用子类的特有的成员 //(3)因为在编译阶段,能调用哪些成员,是由编译类型来决定的 /(4)最终运行效果看子类(运行类型)的具体实现, 即调用方法时,按照从子类(运行类型)开始查找方法 //,然后调用 例子: 现在有个animal类,里面有睡、跑、吃、打招呼的方法 然后有一个cat类继承了animal类,并且重写了吃的方法(变成猫吃鱼),并且有猫自己特别的方法(猫抓老鼠) 那么: //向上转型: 父类的引用指向了子类的对象 //语法:父类类型引用名 = new 子类类型(); Animal animal = new Cat(); Object obj = new Cat();//可以吗? 可以 Object 也是 Cat 的父类 animal.eat();//猫吃鱼.. animal.run();//跑 animal.show();//hello,你好 animal.sleep();//睡 在这里面,进行了向上转型,但仍然调用子类重写的方法(猫吃鱼),但是跑,打招呼和睡子类中都没有,所以调用父类的方法。 但是,不可以调用子类特有的方法。 如果需要调用,则需要向下转型 Cat cat = (Cat) animal; cat.catchMouse();//猫抓老鼠 //多态的向下转型 //(1)语法:子类类型 引用名 =(子类类型)父类引用;

3、属性的值

多态的应用应该还是很多的,这个只是最基本,后面学到有再更新

 

 

标签:调用,Java,--,子类,cry,多态,Cat,animal,类型
From: https://www.cnblogs.com/timothygrass/p/17617998.html

相关文章

  • .Net Core gRpc调用
    目录简介创建gRPC创建服务端创建控制台测试创建自定义服务服务器流式处理方法custom.protoCustomGreeterService.csgRpcRequest.cs客户端流式处理方法custom.protoCustomGreeterService.csgRpcRequest.cs双向流式处理方法custom.protoCustomGreeterService.csgRpcRequest.cs.Net......
  • 二、分阶段构建 LFS
    概述在本章中,我们会检查那些构建LFS系统必须的宿主工具,如果必要的话就安装它们。之后我们会准备一个容纳LFS系统的分区。我们将亲自建立这个分区,在分区上建立文件系统,并挂载该文件系统。宿主系统需求您的宿主系统必须拥有下列软件,且版本不能低于我们给出的最低版本。要注意......
  • 剑指 Offer 26. 树的子结构(中等)
    题目:classSolution{public://本方法运用两层递归,非常巧妙booltraversal(TreeNode*root1,TreeNode*root2){//判断当前两个节点的递归if(root2==nullptr)returntrue;......
  • HCIP学习(1)——基础路由
    一.路由基础当路由器收到一个IP数据包,路由器会根据数据包的目的IP地址查找FIB(ForwardingInformationBase,转发信息库)表,找到“最匹配”的路由条目后,将数据包根据路由条目所指示的出接口或下一跳转发出去。路由器获取路由的方式有三种,分别是动态路由(例如OSPF)、静态路由(Static)和......
  • Get a quick overview of the hottest diagnostic tools of the day
    Intoday'sfast-pacedtechnologicalworld,itiscriticalforprofessionalsacrossindustriestohaveaccesstoreliablediagnostictools.Thisisespeciallytrueforthosewhoworkinheavymachineryandagriculture.Inthisblogpostwetakeaclos......
  • 5--windows命令
    ifconfig/all获取域名、IP地址、DHCP服务器、网关、MAC地址、主机名nettime/domain查看域名、时间netview/domain查看域内所有共享netviewip查看对方局域网内开启了哪些共享netconfigworkstation查看域名、机器名等netuser用户名密码/add建立用户netuser用户......
  • rest风格——fetch发送请求
     服务器端代码有index.js和package.json 文件名index.jsconstexpress=require("express")constjwt=require("jsonwebtoken")constapp=express()letSTU_ARR=[{id:"1",name:"孙悟空",age:18,gender:"男&qu......
  • 8.8 个人赛
    比赛链接:https://www.luogu.com.cn/contest/124225#descriptionA-三值的排序难度⭐⭐解题思路如果a在b应在的位置上,同时还有个b在a应在的位置,这时候交换a和b是最优的,因为交换后就不需要再调整了;因此我们先把序列排序,找到每个数应该在哪个区间内;然后遍历原......
  • ERROR: JAVA_HOME /root/software/jdk1.8.0_262 does not exist.问题的解决
    jdk出了点儿问题,就打算直接卸载重新安装一下预先下载好jdk的压缩包备用1、在usr目录下新建java目录mkdir/usr/java然后进入到新建的java目录下:cd/usr/java2、将已经下载好的jdk的压缩包上传到java目录下3、解压jdk压缩包tar-zxvfjdk-8u161-linux-x64.tar.gz解......
  • 痞子衡嵌入式:AppCodeHub - 一站网罗恩智浦MCU应用程序
    近日,恩智浦官方隆重上线了应用程序代码中心(ApplicationCodeHub,简称ACH),这是恩智浦MCUXpresso软件生态的一个重要组成部分。痞子衡之所以要如此激动地告诉大家这个好消息,是因为ACH并不是又一个恩智浦官方githubprojectsite那么简单而已,且听痞子衡细细道来:ACHgithub......