news 2026/8/24 14:46:53

##关于Java中多态部分知识点##

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
##关于Java中多态部分知识点##

一、多态

  1. 父类引用指向不同的子类对象,调用同一个方法时,表现出不同的行为,这就叫多态。
  2. 需要有向上转型的操作。
    例:Animal(父类) animal = new Dog(子类)("小黄", 10);
  3. 子类必须重写父类的该方法。
  4. 必须有继承关系

二、向上转换场景

2.1 直接赋值

例:Animal a = new Dog(); // 父类引用指向子类对象
a.eat(); // 调用 Dog 类重写的 eat 方法

2.2 方法传参

例:public void feed(Animal a) { // 参数声明为父类类型
a.eat();
}

// 调用时传不同子类
feed(new Dog()); // 狗吃骨头
feed(new Cat()); // 猫吃鱼

2.3 方法返回

例:public Animal getAnimal(String type) {
if ("dog".equals(type)) {
return new Dog(); // 返回子类对象,但声明为父类
} else if ("cat".equals(type)) {
return new Cat();
}
return null;
}

Animal a = getAnimal("dog"); // 实际拿到 Dog,但用 Animal 接
a.eat();

2.4 优点与缺点

  • 优点:代码实现更简单灵活。
  • 缺点:不能调用到子类特有方法。

三、向下转型

3.1 父类类型给到子类

例:Dog dog(子类) = (Dog) animal(父类);

3.2 instanceof

使用时加个判断:if (animal instanceof Dog) {}

instanceof:animal 是不是 Dog 的实例(两侧的类必须有父子继承关系)。

3.3 缺点

存在类型转换风险,可能导致 ClassCastException 异常。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/24 14:43:26

处暑:一场盛大的告别

风,是从昨夜开始变的。起初只是一丝若有若无的凉意,从窗缝里钻进来,轻轻拂过脚踝。你翻了个身,把搭在床尾的薄被往上拉了拉 —— 这个动作,整个夏天都没有做过。醒来时,阳光依旧明亮,但落在皮肤…

作者头像 李华
网站建设 2026/8/24 14:42:54

✨ Mac 版微信防撤回软件:原理、安装与使用全攻略

【Mac 微信防撤回】 适用于 Apple Silicon Mac,通过本地客户端补丁实现: 对方撤回消息后,原消息仍保留 自己发送的消息可以正常撤回 对方撤回时显示提示 修改前自动备份,支持恢复和移除补丁 完全本地运行,不读取聊天数…

作者头像 李华
网站建设 2026/8/24 14:42:05

2026年降重降AI二合一工具测评:5款实测打分

毕业论文查重和AI检测双重收紧,毕业生一边改重复率一边躲AIGC标记,单靠人工熬夜硬扛效率太低。这次我花了两周时间,用同一篇模拟论文对5款降重降AI二合一工具做了实测打分,重点看双检通过率到底差多少。 为什么降重降AI必须一起处…

作者头像 李华
网站建设 2026/8/24 14:37:55

Node系列 · 数据库:联表查询

Node系列 数据库:联表查询单表查询覆盖 80% 业务场景,剩下 20% 是"数据分散在多张表"——必须靠 JOIN 合并。本章讲清楚三种 JOIN 的行为差异、何时选哪个、JOIN 性能优化。一、为什么需要 JOIN 关系型数据库强调单表职责单一——用户表存用户…

作者头像 李华
网站建设 2026/8/24 14:37:52

Havenlon | 杂谈:AI 时代成熟的公司,会同时建设两种能力

越相信 AI,越要设计不信任 AI 的系统。过去一年,几乎所有公司都在讨论同一个问题:AI 到底能帮我们做什么?它能不能写代码,能不能做客服,能不能生成销售线索,能不能分析合同,能不能自…

作者头像 李华
网站建设 2026/8/24 14:31:28

LeetCode 12. 整数转罗马数字 - 详解与 Java 实现

摘要 本文详细解析了 LeetCode 第 12 题「整数转罗马数字」的两种主流解法: 核心解法: 硬编码枚举法:将整数按千、百、十、个位分解,每位数字对应预定义的罗马数字组合,最后拼接结果。时间复杂度 O(1),代码…

作者头像 李华