一篇文章带你学会Java多态

本文介绍了Java中的多态概念,探讨了其在增加代码可扩展性、可维护性和复用性方面的优势,并通过实例说明了多态的使用,包括转型、强制转型以及子类继承和方法重写的应用。
摘要由CSDN通过智能技术生成

多态:

  • Java的多态是面向对象编程的三大特性之一,另外两个分别是封装和继承。**多态允许一个对象具有多种形态。**在Java中,多态的实现主要依赖于继承、接口和方法重写。
  • 多态的作用主要体现在以下几个方面:
      1. 增加了代码的可扩展性:多态允许我们将子类对象当作父类对象来使用,这样在程序中就可以很容易地添加新的子类,而不需要修改原有的代码。
      1. 提高了代码的可维护性:多态使得我们可以将一组相关的操作抽象为一个通用的接口或基类,这样在修改或添加新的功能时,只需要修改或添加相应的类,而不需要修改所有的具体实现。
      1. 提高了代码的复用性:多态允许我们在不修改原有代码的基础上,重用已有的类和方法,从而减少代码的重复性。

如何理解多态:

例如:一个运动员可以分为篮球运动员和足球运动员,在篮球运动员的情况下,工作就是打篮球。在足球运动员的情况下,工作就是踢足球。
在这里插入图片描述

如何使用多态:

  • 在使用多态之前我们需要学习一个知识点:转型

  • 转型:Java中的转型(Casting)和多态(Polymorphism)是密切相关的概念。转型是将一个对象从一种类型转换为另一种类型的过程,而多态则是允许一个对象具有多种形态的特性。在Java中,多态主要通过继承和接口实现,而转型则是实现多态的一种手段。

  • Java中的转型和多态是密切相关的。多态允许我们将子类对象当作父类对象来使用,而转型则是在运行时将父类对象转换为子类对象的过程。这两者共同实现了Java的动态性和灵活性

  • 基本数据类型的转型:

    • 强制转型:
      • int i = 1.2;// int i = (int)1.2;
      • double d = 1.2;int i = (int)d;
    • 自动转型:
      • int i =1000; double d = i;
  • 引用数据类型: 类 接口 数组

    • 自动转型:
      • A a = new A();
      • B b = a;// 这行代码成立的前提是什么? B 是A的父类
        • 一个学生是一个大学生? 不一定
        • 一个大学生一定是一个学生
      • 子类创建对象,对象的地址一般会存在子类类型对应的对象变量名中
        • A a = new A(); // a是对象变量名 对象是内存中具体的一份数据体
      • 子类对象的引用地址 也可以存在一个父类类型的对象变量名中
        • A extends B | B b=a;
          在这里插入图片描述
  • 子类继承父类时,可以继承父类的属性和方法

    • 子类还可以定义自己的属性和方法
    • 子类还可以重写父类的方法
    • 子类对象转型之后,调用时有无变化
      • 可以调用继承的方法,,如果继承的方法被子类重写了,那就调用子类重写的方法
      • 不能调用子类独有的属性和方法
    public class User {
        String name;
        String password;
        int age;
        boolean isVip;
        boolean isAdmin;
        boolean isUser;
        public void home() {
            System.out.println("欢迎登录XX系统");
            System.out.println("这里是您个人主页,用户等级:普通用户");
        }
    }
    class AdminUser extends User {
        public void home() {
            System.out.println("欢迎登录xx系统后台");
            System.out.println("这里是您个人主页,用户等级:管理员");
        }
    }
    class VIPUser extends User {
        public void home() {
            System.out.println("欢迎登录xx系统后台");
            System.out.println("这里是您个人主页,用户等级:VIP");
        }
    }
    class SystemMain {
        public static void login(User user, String pwdIn) {
            if (user.password.equals(pwdIn)) {
                user.home();
            }
        }
        public static void main(String[] args) {
            User user = new User();
            user.password = "123";
            AdminUser aduser = new AdminUser();
            aduser.password = "123";
            VIPUser vipuser = new VIPUser();
            vipuser.password = "123";
            // 调用相同的方法 出来不同的结果

            login(user, "123");
            login(aduser, "123");
            login(vipuser, "123");

        }

    }

在这里插入图片描述

  • 13
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值