当前位置: 首页 > news >正文

Java的多态和重载

1. 重载(Overloading):同一作用域内的 “同名不同参”

重载指的是在同一个类(或同一个作用域)中,允许定义多个名称相同但参数列表不同的方法(或函数),调用时通过 “传入参数的类型、个数、顺序” 来区分具体执行哪个方法。

  1. 多态(Polymorphism):继承体系中的 “动态绑定”

多态指的是在继承(或接口实现)体系中,子类(或实现类)可以重写(Override)父类(或接口)的方法,使得 “父类引用指向子类对象时,调用方法会执行子类的具体实现”,而非父类的实现。

父类与子类的构造器调用规则(最易混淆)

核心规则:

  1. 子类构造器默认会先调用父类的无参构造器(隐式调用,通过 super() 实现)。
  2. 若父类没有无参构造器,子类必须显式调用父类的有参构造器(用 super(参数),且必须放在子类构造器第一行)。

反例(编译报错):

class Parent {// 父类只定义了有参构造器,无默认无参构造器public Parent(int age) {} 
}class Child extends Parent {public Child() {// 编译报错:父类没有无参构造器,子类必须显式调用 super(参数)}
}

正确示例:

class Parent {public Parent(int age) {} 
}class Child extends Parent {public Child() {super(10); // 显式调用父类有参构造器,必须在第一行}
}

混淆点提醒:

  • 不要以为 “子类构造器只负责自己的属性”,它必须先完成父类的初始化
  • 父类的 private 属性子类无法直接访问,但父类构造器仍会被调用(初始化父类的私有状态)。
多态的 “编译看左,运行看右”(核心易错点)

多态场景:父类类型 变量 = new 子类对象()

  • 编译时:变量能调用的方法由 “父类类型” 决定(父类没有的方法,编译报错)。
  • 运行时:实际执行的是 “子类重写后的方法”(若子类未重写,则执行父类方法)。

示例:

class Animal {public void eat() { System.out.println("动物吃饭"); }public void sleep() { System.out.println("动物睡觉"); }
}class Cat extends Animal {@Overridepublic void eat() { System.out.println("猫吃鱼"); } // 重写父类方法public void catchMouse() { System.out.println("猫抓老鼠"); } // 子类独有方法
}public class Test {public static void main(String[] args) {Animal animal = new Cat(); // 多态animal.eat(); // 运行时执行子类重写的方法 → 输出“猫吃鱼”animal.sleep(); // 子类未重写,执行父类方法 → 输出“动物睡觉”// animal.catchMouse(); // 编译报错:父类Animal没有该方法}
}

混淆点提醒:

  • 多态中,子类独有的方法无法通过父类变量调用(编译不通过)。
  • 变量的 “类型”(左边)决定了编译期的可见性,对象的 “实际类型”(右边)决定了运行期的执行逻辑。

方法重载(Overload)与重写(Override)的区别

维度 重载(Overload) 重写(Override)
定义场景 同一个类中 父子类中(子类重写父类方法)
方法名 必须相同 必须相同
参数列表 必须不同(个数 / 类型 / 顺序) 必须相同(与父类保持一致)
返回值类型 可以不同 必须与父类相同(或子类类型)
权限修饰符 无限制 子类权限 ≥ 父类(不能更严格)
核心目的 方便调用(同一功能的不同实现) 实现多态(子类定制父类行为)
http://www.gsyq.cn/news/41862.html

相关文章:

  • 2025 年分离机源头厂家最新推荐排行榜:聚焦国内优质品牌,助力企业精准选型碟片式分离机/离心分离机/全自动分离机公司推荐
  • 维修厂家推荐排行榜单2025:权威评测
  • 2025年色谱仪品牌新推荐排行榜白皮书,赛智液相色谱仪怎么样
  • GESP202309 五级 巧夺大奖题解
  • 2025年肯德基门闭门器优质厂家权威推荐榜单:钢制肯德基门/仿铜肯德基门/肯德基门型材源头厂家精选
  • feg
  • 2025 年 11 月竹制品防霉剂,防虫防霉剂,鞋子防霉剂厂家最新推荐,聚焦资质、案例、售后的五家机构深度解读!
  • 减压风暴小程序:释放压力的休闲新选择,助力流量变现新机遇
  • 2025年市场上破碎机工厂推荐排行榜前十名
  • 吴恩达深度学习课程二: 改善深层神经网络 第一周:深度学习的实践 课后作业和代码实践
  • 读书笔记:分区维护:让数据库管理更轻松高效
  • 2025年11月6日
  • 2025年钣金机架工厂权威推荐榜单:铝型材设备机架/铝型材防护罩/设备机架制作源头厂家精选
  • PG故障处理:PG归档空间耗尽案例分析
  • Applied Machine learning and AI for egnineers与NPL with transform等书推荐
  • 2025年PCBA电路板加工厂哪家售后好?
  • 12c RAC添加节点
  • 十五五规划释放AI产业新信号,边缘智能或成下一个风口
  • 2025年山东霍尼韦尔继电器品牌权威推荐:山东霍尼韦尔固体继电器/山东霍尼韦尔继电器选型/山东霍尼韦尔低压控制元件源头供应商精选
  • 量化选股与量化交易第857篇:通达信主升操盘 - Leone
  • 【中大厂前端】Java常见面试题 - 教程
  • 量化选股与量化交易第858篇:通达信擒龙三把锁 - Leone
  • 系统基础文件属性(二)
  • 量化选股与量化交易第878篇:通达信起爆点探测器 - Leone
  • 系统基础文件属性
  • 量化选股与量化交易第889篇:通达信趋势拐点 - Leone
  • DMS Airflow:企业级数据工作流编排平台的专业实践
  • iOS HTTPS 抓包,从原理到落地排查的工程化方法(Charles / tcpdump / Sniffmaster)
  • torchvision 使用本地 FashionMNIST 数据集进行导入的方法
  • 在 openEuler 上部署 Kafka 集群:深度性能评测与优化指南