首页 > 编程语言 >java多态——向下转型

java多态——向下转型

时间:2024-05-31 18:04:54浏览次数:15  
标签:java father 多态 graduate animal new obj 向下 父类

引入

前面我尝试了一下这个代码

package b;

public class main_ {

	public static void main(String[] args) {
		//向上转型,父类的引用转向了子类的
		father_ animal=new graduate();
		Object obj=new graduate();
		System.out.println(animal.name);
		System.out.println(obj.name);
		
	}
	
}

按道理来说,object是所有类的父类。应该可以obj.name的 

ai说了

由于obj被声明为Object类型,您不能直接调用graduate类中定义的特有方法或属性。如果您需要调用graduate类特有的方法或属性,您需要将obj向下转型(downcasting)为graduate类型:

我们不能改对象,只能改引用,例如这个男的叫李明。男的不能改,但名字可以改为王明

我们在这里

father_ father=new graduate();

父                                子

graduate gat=(graduate)father;

强迫father的类型转换

原先我们father指向graduate这个对象,是父类的这个编译类型的,只能调用父类的方法

现在我们又用graduate编译类型的gat对graduate对象引用,,调用子类的方法

为什么我们要求父类的引用必须指向的是当前目标类型的对象

如果我们用

Dog dog=(dog)animal

那这肯定错了,因为我们原先是把animal指向了猫对象,现在这样的话是把狗强制转化为猫了

这就表示向下转型

标签:java,father,多态,graduate,animal,new,obj,向下,父类
From: https://blog.csdn.net/m0_73177400/article/details/139358142

相关文章

  • JavaScript语法(二):你知道哪些JavaScript语句?
    我们在上一节课中已经讲过了JavaScript语法的顶层设计,接下来我们进入到更具体的内容。JavaScript遵循了一般编程语言的“语句-表达式”结构,多数编程语言都是这样设计的。我们在上节课讲的脚本,或者模块都是由语句列表构成的,这一节,我们就来一起了解一下语句。在JavaScrip......
  • JavaScript语法(四):新加入的**运算符,哪里有些不一样呢?
    上一节我们已经给你介绍了表达式的一些结构,其中关于赋值表达式,我们讲完了它的左边部分,而留下了它右边部分,那么,我们这节课一起来详细讲解。在一些通用的计算机语言设计理论中,能够出现在赋值表达式右边的叫做:右值表达式(RightHandSideExpression),而在JavaScript标准中,规定了在等......
  • JavaScript执行(四):try里面放return,finally还会执行吗?
    在前面几篇文章中,我们已经了解了关于执行上下文、作用域、闭包之间的关系。今天,我们则要说一说更为细节的部分:语句。语句是任何编程语言的基础结构,与JavaScript对象一样,JavaScript语句同样具有“看起来很像其它语言,但是其实一点都不一样”的特点。我们比较常见的语句包括......
  • JavaScript执行(三):你知道现在有多少种函数吗?
    在前一篇文章中,我们大致了解了执行上下文是什么,也知道了任何语句的执行都会依赖特定的上下文。一旦上下文被切换,整个语句的效果可能都会发生改变。那么,切换上下文的时机就显得非常重要了。在JavaScript,切换上下文最主要的场景是函数调用。在这一课,我们就来讲讲函数调用切换......
  • 采用java18+vue语言+springboot开发的家政上门服务平台源码,(平台管理端+用户端+服务端
    采用java18+vue语言+springboot开发的家政上门服务平台源码,(平台管理端+用户端+服务端全套源码)家政管理平台系统是运用现代计算机和网络技术,集信息网、服务网为一体,对社区家政需求信息汇集整理、综合处理,发挥信息介绍、组织服务、资源共享的作用,向社区居民提供优质服务的网络......
  • 第二站:Java蓝——集合框架的深邃海洋
    Java蓝——集合框架的深邃海洋在Java的多彩旅程中,第二站“Java蓝”引领我们深入探索集合框架的深邃海洋。集合框架是Java提供的一套设计良好的API,用于存储、操作和管理数据集合,如列表、集合、映射等。它以高度抽象的方式,为开发者提供了极大的灵活性和高效的数据处理能力。下面......
  • JAVA基础_基本运算
    算数运算符操作符说明举例+加法:相加运算符两侧的值inta=10,b=20;(a+b等于30)-减法:左操作数减去右操作数inta=10,b=20;(a-b等于-10)*乘法:相乘操作符两侧的值inta=10,b=20;(a*b等于200)/除法:左操作数除以右操作数inta=10,b=20;(b/a等于2)%取余:左操作数除以右操作数的余数inta=10,......
  • java数据list写入文件
    /***生成数据文件**@paramdata数据*@paramfileName文件名*@return数据文件对象*@throwsIOException*/privateFilegenerateDataFile(List<List<String>>data,StringfileName)throwsIOException{......
  • 《Java练习题》Java编程题合集(全)
    《Java练习题》Java编程题合集(全) 前言:不仅仅要实现,更要提升性能,精益求精,用尽量少的时间复杂度和空间复杂度解决问题。初学者:《Java练习题》习题集一  https://www.cnblogs.com/jssj/p/11147566.html《Java练习题》习题集二  https://www.cnblogs.com/jssj/p/1122235......
  • JAVA 数据写入excel并发送邮件
    写这个的时候PLM系统还没有开发好,开发这个系统的外包团队每次开会都会被骂,感觉他们快顶不住了,估计完成不了了,烂尾之后应该会有很多需求扔给我。新领导上任之后说这边能不能发邮件,先熟悉一下怎么发邮件吧,这个功能大概率给我来做了流程:​先导包=>邮箱开启配置=>java写好配......