面向对象特征【多态性】

发布于:2024-03-13 ⋅ 阅读:(51) ⋅ 点赞:(0)

请添加图片描述

Java面向对象多态性

在Java中,多态性是一种强大的概念,它允许我们以一种灵活的方式处理不同类型的对象。多态性的核心思想是:一个对象可以表现出多种形态。

对象的多态性,父类的引用指向子类的对象(或子类的对象赋给父类的引用)

多态存在的必要条件

  • 有若干子类继承同一个父类
  • 子类重写了父类中的方法
  • 父类的引用指向了子类对象

向下转型

定义: 向下转型是从父类类型子类类型显式转换的过程,它允许使用子类特有的方法和属性

使用场景: 当你使用多态性创建一个父类引用并指向子类的对象时,你可以通过向下转型访问子类特有的方法。

安全性检查:在进行向下转型之前,通常建议使用 instanceof 运算符进行安全性检查,以确保父类引用确实指向了正确的子类对象。

举例:

abstract class Animal {
    abstract void eat();
}

class Cat extends Animal {
    public void eat() {
        System.out.println("吃鱼");
    }

    public void work() {
        System.out.println("抓老鼠");
    }
}

class Dog extends Animal {
    public void eat() {
        System.out.println("吃骨头");
    }

    public void work() {
        System.out.println("看家");
    }
}

public class Test {
    public static void main(String[] args) {
        show(new Cat()); // 以Cat对象调用show方法
        show(new Dog()); // 以Dog对象调用show方法
        Animal a = new Cat(); // 向上转型
        a.eat(); // 调用的是Cat的eat
        Cat c = (Cat) a; // 向下转型
        c.work(); // 调用的是Cat的work
    }

    public static void show(Animal a) {
        a.eat(); // 类型判断
        if (a instanceof Cat) {
            Cat c = (Cat) a;
            c.work();
        } else if (a instanceof Dog) {
            Dog c = (Dog) a;
            c.work();
        }
    }
}

输出结果:

吃鱼
抓老鼠
吃骨头
看家
吃鱼
抓老鼠

总结

多态性的优点在于它增加了代码的灵活性可维护性。通过多态性,可以编写通用的代码,而不需要针对每个具体的子类编写特定的逻辑。这使得代码更易于扩展维护

本文含有隐藏内容,请 开通VIP 后查看

网站公告

今日签到

点亮在社区的每一天
去签到