关于Java中对象的向上转型和向下转型

什么是多态?

同一个类调用同一个方法会产生不同的影响/结果 这就是多态

public class Pet{
	public void eat(){
		System.out.println("Pet eat...")
	}
}
class Dog extends Pet{
	public void eat(){
		System.out.pringln("Dog eat...")
	}
	public void run(){
		System.out.pringln("Dog run...子类特有的方法")
	}
}
class Cat extends Pet{
	public void eat(){
		System.out.println("Cat eat...")
	}
	public void swim(){
		System.out.println("Cat swim...子类特有的方法")
	}
}

为什么向上转型?

限制对子类特有方法的访问

Pet p=new Dog()//向上转型是子类转父类 自动提升不需要强转
p.eat()
p.run() //报错 只能访问到父类有的方法 编译时看左边类型 运行时看右边类型

为什么向下转型?

使用子类特有的方法

Pet p=new Cat()
p=(Cat)p //向下转型是父类转子类 需要强制转换但只能转到运行期类型(这里是Cat)

原文链接:https://www.cnblogs.com/odfive/p/17337710.html

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:关于Java中对象的向上转型和向下转型 - Python技术站

(0)
上一篇 2023年4月22日
下一篇 2023年4月22日

相关文章

  • Java中ArrayList的使用详细介绍

    可以的,下面是关于Java中ArrayList使用详细介绍的完整攻略。 什么是ArrayList? ArrayList是Java中的一个动态数组,具有自动扩容功能。与Java中的数组相比,ArrayList能够更加灵活地操作元素,而且能够自动处理数组的长度。 如何使用ArrayList? 要使用ArrayList,你需要遵循以下步骤: 1. 导入java.u…

    Java 2023年5月26日
    00
  • java如何调用Groovy脚本

    当Java想要调用Groovy脚本时,可以通过GroovyShell类的方法来完成。具体步骤如下: 步骤一:构建GroovyShell实例 在Java代码中,首先需要构建一个GroovyShell实例,该实例将被用来执行Groovy脚本。构建GroovyShell实例的方法有多种,下面是其中一种方法: import groovy.lang.Binding; …

    Java 2023年5月26日
    00
  • Spring深入分析讲解BeanUtils的实现

    Spring深入分析讲解BeanUtils的实现 概述 BeanUtils是Spring框架提供的一个常用工具类,主要用来处理JavaBean属性的拷贝、类型转换以及操作属性的getter/setter方法等。本篇文章旨在深入分析Spring框架中BeanUtils的实现,包括BeanUtils工具类的具体功能、使用方式和实现原理等。 BeanUtils工具…

    Java 2023年5月19日
    00
  • Java前后端的JSON传输方式(前后端JSON格式转换)

    下面是针对Java前后端的JSON传输方式以及前后端JSON格式转换的完整攻略。 一、JSON格式简介 JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。JSON格式常用于Web应用程序之间的数据传输。 1.1 JSON格式规则 在JSON中,数据格式采用键值对的形式,键值…

    Java 2023年5月26日
    00
  • mybatis @Intercepts的用法解读

    下面将详细讲解 “MyBatis @Intercepts 的用法解读”。 1. @Intercepts 简介 @Intercepts 是 MyBatis 中提供的一个注解,用于标记拦截器对象。 2. 用法解读 首先,我们需要了解 MyBatis 中的拦截器机制。 MyBatis 中的拦截器就是一个实现了 org.apache.ibatis.plugin.In…

    Java 2023年5月20日
    00
  • JVM内存增强之逃逸分析

    JVM内存增强之逃逸分析是指在Java应用程序启动时,JVM在运行过程中动态的分析程序的对象生命周期,将对象的使用范围限制在方法内部,从而达到减少对象在堆上的分配、减少GC(垃圾回收)压力、提高应用程序的性能等目的的一种技术手段。 下面是JVM内存增强之逃逸分析的完整攻略: 1. 什么是逃逸分析? 逃逸分析是一种程序优化技术,它对程序中的对象进行分析,识别出…

    Java 2023年5月19日
    00
  • Gateway+Swagger2配置聚合文档方式

    下面是“Gateway+Swagger2配置聚合文档方式”的完整攻略,包含以下几个步骤: 1. 引入Swagger2依赖 在网关服务的pom.xml文件中添加Swagger2依赖: <dependency> <groupId>io.springfox</groupId> <artifactId>springfo…

    Java 2023年6月3日
    00
  • intellij idea 2021.2 打包并上传运行spring boot项目的详细过程(spring boot 2.5.4)

    下面是详细的攻略: 准备工作 确保本地已经安装了 Java 和 Maven,并配置好了相应的环境变量。 在 IntelliJ IDEA 中安装好 Spring Boot 插件和 Maven 插件。 构建 Spring Boot 项目,确保项目可以运行。 打包操作 在 IntelliJ IDEA 中打开 Spring Boot 项目,右键点击项目名称,选择 “…

    Java 2023年5月19日
    00
合作推广
合作推广
分享本页
返回顶部