Java第七周学习博客——多态
一、本周学习内容
本周主要学习了 Java 面向对象三大特性中的多态。在已经掌握继承、方法重写的基础上,系统学习了多态的概念、实现条件、运行机制、调用规则以及实际应用场景。通过代码练习,我基本掌握了多态的写法与作用,对面向对象编程的理解更加完整。
二、多态的基本概念
多态是面向对象非常重要的特性,意思是同一个行为,在不同子类对象上表现出不同的效果。
简单理解:
父类定义通用方法,不同子类重写该方法,程序运行时根据真实对象类型执行不同的逻辑,这就是多态。
三、多态的三个必要条件
想要在 Java 中实现多态,必须同时满足三点:
- 存在继承关系(子类继承父类)
- 子类重写父类方法
- 父类引用指向子类对象
缺一不可,其中方法重写是多态的核心。
四、多态基础代码示例
|
java // 父类 class Animal{ public void shout(){ System.out.println("动物发出叫声"); } }
// 子类 Dog class Dog extends Animal{ @Override public void shout(){ System.out.println("小狗汪汪叫"); } }
// 子类 Cat class Cat extends Animal{ @Override public void shout(){ System.out.println("小猫喵喵叫"); } }
public class Test { public static void main(String[] args) { // 父类引用 指向 子类对象 —— 多态核心写法 Animal a1 = new Dog(); Animal a2 = new Cat();
a1.shout(); a2.shout(); } }
|
运行结果
五、多态调用规则
1. 成员方法(有多态)
编译看左边(父类),运行看右边(子类)
简单说:执行的是子类重写后的方法
2. 成员变量(没有多态)
编译看左边,运行也看左边
变量不会被重写,永远调用父类的变量。
六、多态的常用应用:父类做方法参数
多态最大的用处就是简化代码、提高扩展性。
用父类作为方法参数,可以一次性接收所有子类对象,不用写多个重载方法。
示例:
|
java public class Test { // 父类作为参数,可以接收所有子类 public static void play(Animal a){ a.shout(); }
public static void main(String[] args) { play(new Dog()); play(new Cat()); } }
|
七、多态的优点
- 代码更加简洁、统一
- 扩展性极强,新增子类无需改动原有代码
- 降低程序耦合度,更方便维护和迭代