首页 > 编程语言 >Java 向上转型与向下转型

Java 向上转型与向下转型

时间:2024-08-10 23:22:59浏览次数:13  
标签:sound Java 子类 转型 Dog Animal 向下 父类

Java系列文章目录


文章目录

一、前言

  • 向上转型与向下转型笔记

二、学习内容:

  • 向上转型与向下转型

三、问题描述

  • 对转型的理解有点混乱

四、解决方案:

4.1 示例代码

  • 狗与猫是动物的子类,共有的方法是eat()

在这里插入图片描述

在这里插入图片描述

4.2 引入转型

  1. 向上转型

不管以后传进方法里的是猫还是狗还是其他动物
他们的eat方法都是自己的

  • 子类对象可以被视为父类对象,这样可以利用父类的方法。
  • 不会丢失子类的特性,但只能调用父类的方法。

在这里插入图片描述

  1. 向下转型

类型转回去

  • 必须确保父类对象实际上是子类对象,否则会抛出ClassCastException

在这里插入图片描述

  • 可以添加判断

在这里插入图片描述

  • 同类就不会报错

在这里插入图片描述


五、总结:

5.1 学习总结:

向上转型(Upcasting)

定义: 将子类对象转换为父类类型。

特点:

  • 子类对象可以被视为父类对象,这样可以利用父类的方法。
  • 不会丢失子类的特性,但只能调用父类的方法。

示例:

class Animal {  
    void sound() {  
        System.out.println("Animal sound");  
    }  
}  

class Dog extends Animal {  
    void sound() {  
        System.out.println("Bark");  
    }  
}  

Animal animal = new Dog();  // 向上转型  
animal.sound();  // 输出 "Bark"  

向下转型(Downcasting)

定义: 将父类引用转换为子类类型。

特点:

  • 必须确保父类对象实际上是子类对象,否则会抛出ClassCastException。

示例:

Animal animal = new Dog();  // 向上转型  
Dog dog = (Dog) animal;  // 向下转型  
dog.sound();  // 输出 "Bark"  

引入转型的原因

  • 多态性: 通过向上转型,Java支持多态,使得相同的方法调用可以有不同的实现,提高代码灵活性。
  • 代码重用: 向上转型和向下转型使得代码能够在不同层次上复用,减少重复代码。
  • 增强可维护性: 通过使用父类引用操作子类对象,可以降低系统复杂性,增强可维护性。

(后续有遇到问题再添加)


声明:如本内容中存在错误或不准确之处,欢迎指正。转载时请注明原作者信息(麻辣香蝈蝈)。

标签:sound,Java,子类,转型,Dog,Animal,向下,父类
From: https://blog.csdn.net/m0_66070037/article/details/141097576

相关文章

  • Javascript常见算法(二)
    合并K个排序链表详解 在JavaScript中合并K个已排序的链表是一个常见的算法问题,它可以通过多种方法解决,包括使用优先队列(通常通过最小堆实现)或直接两两合并。这里,我将详细解释这两种方法,并给出示例代码。方法一:使用优先队列(最小堆)这种方法的核心思想是利用一个最小堆来持续......
  • java流程控制:用户交互Scanner
    1.首先输入newScanner然后Alt+回车建立一个扫描器2.选择使用next方式或者nextLine方式进行接收3.使用if判断用户是否输入字符串,有hasNext和hasNextLine两种4.定义一个变量为next或nextLine方式5.输出该方式6.关闭IO类,防止占用资源next和nextLine方式的区别next......
  • Java 入门探索者09(数组)
    Java的数组是一种固定大小、有序且相同类型元素的集合。它可以存储同一种数据类型的多个元素,并按照索引顺序访问这些元素。Java数组的特点包括:1.长度固定:一旦数组被创建,其长度就不能修改。可以通过数组的length属性来获取数组的长度。2.有序性:数组中的元素按照索引顺序排......
  • Java计算机毕业设计旧商品销售系统(开题报告+源码+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着消费观念的转变和环保意识的增强,旧商品市场逐渐兴起并展现出巨大的发展潜力。传统上,旧商品的销售往往依赖于线下二手市场或个体间的零散交易,这种......
  • Java计算机毕业设计魔方网上商城的设计与实现(开题报告+源码+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着互联网技术的飞速发展和电子商务的普及,线上购物已成为人们日常生活不可或缺的一部分。魔方网上商城作为新时代电子商务的典范,旨在打造一个集商品......
  • Java计算机毕业设计面向教育培训机构的财务管理系统(开题报告+源码+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着教育培训行业的蓬勃发展,机构规模的不断扩大,财务管理成为制约其高效运营与可持续发展的关键因素之一。传统的手工财务管理方式已难以满足教育培训......
  • Java计算机毕业设计驾照考试知识管理平台(开题报告+源码+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着汽车保有量的急剧增长,驾照考试已成为现代社会中一项普遍而重要的社会活动。然而,传统的驾照考试知识学习方式往往依赖于纸质教材、课堂讲授和模拟......
  • 【JVM】Java跨平台性质及Java虚拟机内存结构
    目录Java为什么可以跨平台Java虚拟机的内存结构简单聊聊~Java为什么可以跨平台Java编写的代码可以做到一次编译,多平台运行。这是为什么呢?我们在使用Java之前先要去按照对应操作系统版本的JDK,JDK中包含了Java编译器,Java虚拟机,一些类库等。在编写完代码之后,代码通过编译......
  • Java学习第六周
    packagecom.sxt;publicclassTestLoop{publicstaticvoidmain(String[]args){for(intm=1;m<=5;m++){for(inti=0;i<5;i++){System.out.println(m+"\t");}System.out.println();}}}1 1 1 1 12 2 2 2 23 3 3 3 34 4 4 4......
  • 基于Java Web的社区新闻推荐系统/资讯网站
     目录摘要Abstract1引言1.1研究背景1.2研究现状1.3主要研究内容2相关技术2.1Java介绍2.2MySQL数据库2.3Tomcat2.4Vue框架3需求分析3.1功能需求分析3.2非功能需求分析3.3可行性分析4系统设计4.1系统功能设计4.2系统流程设......