首页 > 编程语言 >java多态

java多态

时间:2024-01-19 11:34:33浏览次数:39  
标签:java animal 方法 多态 Cat 编译 Animal catchMouse

有两个类,一个Animal类,一个Cat类,其中Cat是Animal的子类,此时我在主函数中这样声明一个对象"Animal animal=new Cat();",此时animal实际上是Cat类
此时,Animal类中没有catMouse()这个方法,Cat类中有这个方法,我在主函数声明了"Animal animal=new Cat();"后,无法调用animal.catchMouse(); 是因为在编译的时候,编译器看的是前面,即animal的编译类型是Animal,而Animal中没有catchMouse();方法,所以编译不通过,显示不存在该方法,
两个类都有eat方法,即Cat对eat方法进行了重写,此时调用animal.eat();,编译能够通过,并且运行的时候,是按照子类父类找方法中的顺序来进行查找,即优先查找的的Cat类,Cat是animal的运行类型

如果要用catchMouse可以用这两种方法
1、Cat cat=(Cat) animal强转,但是强转之后,cat的编译类型才是Cat,animal的编译类型还是Animal,这样的含义是声明一个对象,指向的原本animal指向的对象,所以在使用catch.Mouse时,得要cat.catchMouse这样用。
2、如果不想再声明新对象,也可以((Cat) animal).catMouse();这样子使用,直接在编译前强转编译类型,但实际上animal的编译类型还是没有改变,这样做是允许你通过 animal 引用调用 Cat 类型中的方法。

标签:java,animal,方法,多态,Cat,编译,Animal,catchMouse
From: https://www.cnblogs.com/xjh-6/p/17974267

相关文章

  • java相似度算法计算
     publicclassCompareStrSimUtil{privatestaticintcompare(Stringstr,Stringtarget,booleanisIgnore){intd[][];//矩阵intn=str.length();intm=target.length();inti;//遍历str的intj;//遍历......
  • HanLP — 汉字转拼音 -- JAVA
    目录语料库训练加载语料库训练模型保存模型加载模型计算调用HanLP在汉字转拼音时,可以解决多音字问题,显示输出声调,声母、韵母,通过训练语料库,本文代码为《自然语言处理入门》配套版本HanLP-1.7.5对重载不是重任进行转拼音,效果如下:原文:重载不是重任拼音(数字音调):chong2,zai3,bu......
  • docker构建java镜像,运行镜像出现 no main manifest attribute, in /xxx.jar
    背景本文主要是一个随笔,记录一下出现"nomainmanifestattribute"的解决办法问题原因主要是近期在构建一个镜像,在镜像构建成功后,运行一直提示"nomainmanifestattribute",但是还在想,是不是Dockerfile写错了,后来仔细检查了一下,发现是在pom文件下build节点下配置问题,修改配置......
  • java创建线程的4种方式
    1.Thread类一个线程在Java中使用一个Thread实例来描述。Thread类是Java语言一个重要的基础类,位于java.lang包中。Thread类有不少非常重要的属性和方法,用于存储和操作线程的描述信息。1.1线程ID属性:privatelongtid,此属性用于保存线程的ID。这是一个private类型属性,外......
  • Java里ArrayList中的toArray()用法
    深入理解List的toArray()方法和toArray(T[]a)方法这两个方法都是将列表List中的元素转导出为数组,不同的是,toArray()方法导出的是Object类型数组,而toArray[T[]a]方法导出的是指定类型的数组。下面是两个方法的申明及说明,摘自Java8的API文档。toArray()方法的分析Object[]toA......
  • 基于JAVA的新闻类网站
    21世纪的今天,随着社会的不断发展与进步,人们对于信息科学化的认识,已由低层次向高层次发展,由原来的感性认识向理性认识提高,管理工作的重要性已逐渐被人们所认识,科学化的管理,使信息存储达到准确、快速、完善,并能提高工作管理效率,促进其发展。论文主要是对新闻类网站进行了介绍,包括研......
  • 论文翻译 | 【深入挖掘Java技术】「底层原理专题」深入分析一下并发编程之父Doug Lea
    前提介绍DougLea在州立大学奥斯威戈分校(DougLea)摘要本文深入探讨了一个Java框架的设计、实现及其性能。该框架遵循并行编程的理念,通过递归方式将问题分解为多个子任务,并利用工作窃取技术进行并行处理。所有子任务完成后,其结果被整合以形成完整的并行程序。在总体设计上,该框架借鉴......
  • javascript中的undefined可以被重写
    众所周知,当声明一个变量,并且没有给赋值的情况下,它的初始值是 undefined。但是在javascript中,怎么检查一个值是否为 undefined 呢?在现代浏览器中,你可以安全的直接比较将变量是与 undefined 进行比较if(name===undefined){//...}一些人反对直接使用 undefined......
  • 深入理解Java中的ThreadLocal
    第1章:引言大家好,我是小黑。今天咱们来聊聊ThreadLocal。首先,让咱们先搞清楚,ThreadLocal是个什么玩意儿。简单说,ThreadLocal可以让咱们在每个线程中创建一个变量的“私有副本”。这就意味着,每个线程都可以独立地改变自己的副本,而不会影响其他线程。这就像是每个人都有自己的笔记......
  • 【APP逆向09】Java基础之数据类型(Map)
    1.Map是一个接口,常见实现这个接口的有两个类,用于存储键值对。HashMap,无序。TreeMap,默认根据key排序。(常用)2.实例2.1:HashMapimportjava.util.HashMap;publicclassDemo7{publicstaticvoidmain(String[]args){HashMaph1=newHashMap();......