• Java多态的理解和应用


    一、多态概述

    1.多态是继封装、继承之后,面对对象的第三大特性

    2.多态在实际中的意义:

    在现实生活中尝尝会出现不同的形态体现,例如张三是一名学生,而学生又是人的一种分类,所以说张三既是学生也是人,张三就体现除了两种形态

    Java作为面对对象的语言,就可以去表现这样的情况,一种事物多种形态的体现

    3.多态的条件

    ● 必须要在继承体系下

    ● 子类必须要重写父类中的方法

    通过父类的引用调用重写的方法

    4.多态的定义与使用格式

                    定义格式:父类类型 变量名=new 子类类型();

    5.多态的理解

                    多态是同一个行为具有多个不同表现形式或形态的能力。

                   多态就是同一个接口,使用不同的实例而执行不同操作。

    二、instanceof关键字

    作用:用来判断某个对象是否属于某种数据类型。

    ● 注意:返回类型为布尔类型

    使用案例:

    1. Father f1=new Daughter();
    2. Father f2=new Son();
    3. if(f1 instanceof Daughter){
    4. System.out.println("f1是Daughter的类型");
    5. }
    6. else{
    7. System.out.println("f1是Son的类型");
    8. }
    9. if(f2 instanceof Son){
    10. System.out.println("f2是Daughter的类型");
    11. }
    12. else{
    13. System.out.println("f2是Son的类型");
    14. }

    输出:f1是Daughter的类型
               f2是Son的类型

    三、多态的转型

    多态的转型分为向上转型和向下转型两种
    向上转型:多态本身就是向上转型过的过程
             使用格式:父类类型 变量名=new 子类类型();

            适用场景:当不需要面对子类类型时,通过提高扩展性,或者使用父类的功能就能完成相应的操作。

    向下转型:一个已经向上转型的子类对象可以使用强制类型转换的格式,将父类引用类型转为子类引用各类型
            使用格式:子类类型 变量名=(子类类型) 父类类型的变量;

            适用场景:当要使用子类特有功能时。

    四、多态案例

    (理解多态,可以认真琢磨一下博主下面的案例)

    1. public class Test {
    2. public static void main(String[] args) {
    3. show(new Cat()); // 以 Cat 对象调用 show 方法
    4. show(new Dog()); // 以 Dog 对象调用 show 方法
    5. Animal a = new Cat(); // 向上转型
    6. a.eat(); // 调用的是 Cat 的 eat
    7. Cat c = (Cat)a; // 向下转型 这里属于向下转型,因为父类没有work这个方法
    8. c.work(); // 调用的是 Cat 的 work
    9. }
    10. public static void show(Animal a) {
    11. a.eat();
    12. // 类型判断
    13. if (a instanceof Cat) { // 猫做的事情
    14. Cat c = (Cat)a;
    15. c.work();
    16. } else if (a instanceof Dog) { // 狗做的事情
    17. Dog c = (Dog)a;
    18. c.work();
    19. }
    20. }
    21. }
    22. //这是一个抽象类,如果不懂,后面的博客我会介绍什么是抽象类
    23. //这里简单说明一下:抽象类也是类,只不过抽象类里面的方法可以没有具体的实现,可由子类去实现
    24. abstract class Animal {
    25. abstract void eat();
    26. }
    27. class Cat extends Animal {
    28. public void eat() {
    29. System.out.println("吃鱼摆摆");
    30. }
    31. public void work() {
    32. System.out.println("抓老鼠");
    33. }
    34. }
    35. class Dog extends Animal {
    36. public void eat() {
    37. System.out.println("吃骨头");
    38. }
    39. public void work() {
    40. System.out.println("看家");
    41. }
    42. }

    Java多态的分享就到此结束了,欢迎大家的来指教

  • 相关阅读:
    【每日一题】统计范围内的元音字符串数
    24.Semaphore的作用和原理
    弹簧系统三维可视化
    聊聊 C# 和 C++ 中的 泛型模板 底层玩法
    抖音获得抖音商品详情 API 返回值说明
    Word2Vec详解
    Navicat 连接 SQL Server 报错(IM002 未发现数据源名称并且未指定默认驱动程序)
    小程序商城的运营推广技巧(二)
    Gcware Python 接口(8)
    简单聊一聊幂等和防重
  • 原文地址:https://blog.csdn.net/weixin_56252440/article/details/126153886