返回顶部
首页 > 资讯 > 后端开发 > JAVA >类的多态性(JAVA)
  • 200
分享到

类的多态性(JAVA)

开发语言java 2023-09-01 07:09:41 200人浏览 八月长安
摘要

目录 多态  重写  向上转型 类的多态性例子:  多态的优缺点   多态  所有的OOP语言都会有三个特征: 封装(点击可跳转)继承(点击可跳转)多态 多态体现:在代码运行时,当传递不同类对象时,会调用对应类中的方法。 在ja

目录

多态 

重写 

向上转型

类的多态性例子: 

多态的优缺点


 

多态 

所有的OOP语言都会有三个特征:

  1. 封装(点击可跳转)
  2. 继承(点击可跳转)
  3. 多态

多态体现:在代码运行时,当传递不同类对象时,会调用对应类中的方法。

在java中要实现多态,必须要满足如下几个条件,缺一不可:

  1. 必须在继承体系下;
  2. 子类必须要对父类中方法进行重写 ;
  3. 通过父类的引用调用重写的方法。

重写 

继承我们已经知道了,那我们面临的第一个问题就是什么是重写?

重写(override):也称为覆盖。重写是子类对父类非静态、非private修饰,非final修饰,非构造方法等的实现过程进行重新编写, 返回值(返回类型满足父子关系也可以)和形参都不能改变。即外壳不变,核心重写!

重写的好处在于子类可以根据需要,定义特定于自己的行为。 也就是说子类能够根据需要实现父类的方法。

注:避免在构造方法中调用重写的方法。

方法重写的规则:

  1. 子类在重写父类的方法时,一般必须与父类方法原型一致:方法名,参数列表要完全一致
  2. 被重写的方法返回值类型可以不同,但是必须是具有父子关系的
  3. 访问权限不能比父类中被重写的方法的访问权限更低。例如:如果父类方法被public修饰,则子类中重写该方法就不能声明为 protected,父类被static、private修饰的方法、构造方法都不能被重写
  4. 重写的方法, 可以使用 @Override 注解来显式指定,有了这个注解能帮我们进行一些合法性校验。例如不小心将方法名字拼写错了 (比如写成 aet),那么此时编译器就会发现父类中没有 aet 方法,就会编译报错, 提示无法构成重写。

 此时我们已经满足两点了还差最后一点。而第三点是通过父类的引用调用重写的方法。而要实现这一点就必须进行向上转型。

向上转型

向上转型就是为了实现代码通过父类的引用调用重写的方法。向上转型其实很简单

向上转型:实际就是创建一个子类对象,将其当成父类对象来使用。

语法格式:父类类型 对象名 = new 子类类型()

向上转型的使用场景:

  • 直接赋值(上面的例子就是直接赋值)
  • 方法传参
  • 方法返回

向上转型的优点:让代码实现更简单灵活。
向上转型的缺陷:不能调用到子类特有的方法。

使用了向上转型之后就可以通过父类的引用调用重写的方法,而不是重写方法的就没法调用

class Animal{    public String name = "花花";    public void eat(){        System.out.println(this.name+"正在吃饭");    }}class Dog extends Animal{    @Override    public void eat(){        System.out.println(this.name+"在吃狗粮");    }    public void a(){        System.out.println("hhh");    }}public class Test {    public static void main(String[] args) {        Animal dog = new Dog();        dog.eat();        //打印花花在吃狗粮        Animal dog2 = new Animal();        dog2.eat();        //打印花花正在吃饭    }}

类的多态性例子: 

class Animal{    public String name = "花花";    public void eat(){        System.out.println(this.name+"正在吃饭");    }}class Dog extends Animal{    @Override    public void eat(){        System.out.println(this.name+"在吃狗粮");    }}class Cat extends Animal{    @Override    public void eat(){        System.out.println(this.name+"在吃猫粮");    }}public class Test {    public static void fun(Animal arr){        arr.eat();    }    public static void main(String[] args) {        //数组的每个成员都会发生向上转型        Animal[] arr = {new Dog(),                        new Cat()};    //此时就会发现调用同一个方法fun()会有两种结果        fun(arr[0]);        fun(arr[1]);    }}

多态的优缺点

  • 能够降低代码的 "圈复杂度", 避免使用大量的 if - else;

什么叫 "圈复杂度" ?

圈复杂度是一种描述一段代码复杂程度的方式。一段代码如果平铺直叙,那么就比较简单容易理解。而如果有很多的条件分支或者循环语句,就认为理解起来更复杂;

因此我们可以简单粗暴的计算一段代码中条件语句和循环语句出现的个数,这个个数就称为 "圈复杂度"。如果一个方法的圈复杂度太高, 就需要考虑重构。

  • 可扩展能力更强;
  • 多态缺陷:代码的运行效率降低。

来源地址:https://blog.csdn.net/2302_76339343/article/details/132084612

--结束END--

本文标题: 类的多态性(JAVA)

本文链接: https://lsjlt.com/news/387813.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 类的多态性(JAVA)
    目录 多态  重写  向上转型 类的多态性例子:  多态的优缺点   多态  所有的OOP语言都会有三个特征: 封装(点击可跳转)继承(点击可跳转)多态 多态体现:在代码运行时,当传递不同类对象时,会调用对应类中的方法。 在ja...
    99+
    2023-09-01
    开发语言 java
  • Java多态性抽象类与接口细致详解
    目录1、多态性1.1向上转型1.2向下转型2、抽象类2.1抽象类的基本概念3、接口3.1接口的基本概念3.2接口的使用限制3.3使用接口定义标准3.4抽象类与接口的区别1、多态性 多...
    99+
    2024-04-02
  • 多态与多态性
    1. 什么是多态     多态指的是同一种/类事物的不同形态 2.为何要用多态性   1 增加了程序的灵活性   2 增加了程序的可扩张性 多态性:分为静态多态性和动态多态性     多态性:在多态的背景下,可以在不用考虑对象具体类型的前...
    99+
    2023-01-30
    多态性 多态
  • Java多态性怎么理解
    本篇内容主要讲解“Java多态性怎么理解”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Java多态性怎么理解”吧!面向对象编程有三个特征,即封装、继承和多态。封装隐藏了类的内部实现机制,从而可以...
    99+
    2023-06-17
  • Java多态性是怎么实现的
    本篇内容主要讲解“Java多态性是怎么实现的”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Java多态性是怎么实现的”吧!多态性是通过:1 接口和实现接口并覆盖接口中同一方法的几不同的类体现的2...
    99+
    2023-06-17
  • Java 继承的灵活性:多态的威力
    理解多态性 多态性基于两个概念: 子类化:子类可以继承父类的属性和方法,并添加自己的特定实现。 方法重写:子类可以覆盖从父类继承的方法,并提供自己的实现。 当一个父类引用指向其子类的对象时,就会发生多态性。此时,父类引用可以调用子类特...
    99+
    2024-03-12
    多态性是 Java 面向对象编程中一项关键特性 它允许对象表现出不同的行为 具体取决于它们的类型。通过多态性 我们可以创建通用代码 这些代码可以与不同类型的对象协同工作 从而提高代码的灵活性、可扩展
  • Java语法之 Java 的多态、抽象类和接口
    目录一、多态1.向上转型2.动态绑定3.方法重写4.向下转型5.关键字super6.在构造方法中调用重写方法(坑)7.理解多态8.小结二、抽象类1.概念2.注意事项3.抽象类的意义3...
    99+
    2024-04-02
  • 【Java】Java中的多态
    文章目录 一、什么是多态二、多态实现的条件三、重写3.1 什么是重写3.2 重写和重载的区别 四、向上转型和向下转型4.1 向上转型4.2 向下转型 五、多态的优缺点六、避免在构造方法...
    99+
    2023-09-05
    java 开发语言
  • Java 继承的迷宫:导航超类、子类和多态
    在 Java 继承中,超类(父类)是通用类,定义了对象的行为和属性,而子类(派生类)从超类继承并扩展其功能。子类可以使用超类的非私有成员,并可以覆写超类的方法。 多态: 多态性允许一个对象的行为根据其实际类型而变化。在 Java 中,子类...
    99+
    2024-03-12
    超类与子类:
  • java的三大特性封装、继承、多态
    我们知道面向对象的三大特性是封装、继承和多态。然而我们有时候总是搞不清楚这些概念。下面对这些概念进行整理,为以后面向抽象的编程打下坚实的基础。  封装的概念还是很容易理解的。如果你会定义类,那么相信你对封装的概念已经完全掌握了。下面定义的几...
    99+
    2017-04-24
    java教程 java 封装 继承 多态
  • Java三大特性之多态详解
    目录概述引入定义多态的体现多态的好处引用类型转换向上转型向下转型为什么要转型转型的异常概述 引入 多态是继封装、继承之后,面向对象的第三大特性。 生活中,比如跑的动作,小猫、小狗和大...
    99+
    2022-11-13
    Java 特性 多态 Java多态
  • Java中的多态
    一、多态定义及存在条件 1.1 多态的定义 多态是什么? 多态是同一个行为具有不同的表现形式或形态的能力同一方法可以根据发送对象的不同而采用不同的行为方式 例如:打印机分为黑白打印机和彩色打印机,在黑白打印机情况下打出来为黑白,在彩色打印机...
    99+
    2023-08-31
    java
  • 【JAVA】多态
    作者主页:paper jie_的博客 本文作者:大家好,我是paper jie,感谢你阅读本文,欢迎一建三连哦。 本文录入于《JAVASE语法系列》专栏,本专栏是针对于大学生,编程小白精心打造的。笔者用重金(时间和精力)打造,将ja...
    99+
    2023-09-06
    java 开发语言
  • Java-多态
    目录 1.多态的概念 2.多态的实现条件。 3.重写 4.向上转型和向下转型 5.多态的优缺点 6.避免在构造方法中调用重写方法 1.多态的概念         多态字面意思就是多种形态,具体点就是完成某个行为时,不同的对象完成时产生...
    99+
    2023-08-31
    java 开发语言
  • Java中的多态、抽象类和接口详解
    目录1.多态1.1 向上转型1.2 向下转型1.3 实现多态的条件1.4多态的特点与使用1.5多态的应用以父类类型作为方法的参数使用父类型作为方法的返回值1.6 多态的注意点2.抽象...
    99+
    2024-04-02
  • Java中多态和抽象类的实现方式
    这篇文章主要讲解了“Java中多态和抽象类的实现方式”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Java中多态和抽象类的实现方式”吧!  多态  1.要实现多态,那么必须存在父子关系(继承...
    99+
    2023-06-02
  • Java 之类型转换与多态详情
    目录一、类型检查二、基本类型转换三、upcast与多态四、downcast五、Object类型一、类型检查 Java的任意变量和引用经过类型声明(type declaration),...
    99+
    2024-04-02
  • 如何理解java 多态与抽象类
    今天就跟大家聊聊有关如何理解java 多态与抽象类,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。前言今天是2021LOL全球总决赛,一直不被大家看好的EDG冲到了决赛对战韩国队的DK...
    99+
    2023-06-25
  • java 多态与抽象类详解总结
    目录前言多态初识多态什么是多态?多态的分类多态的必要条件实现多态向上转型向下转型instanceof运算符具体实现抽象类与抽象方法为什么要使用抽象?抽象方法抽象类前言 今天是2021...
    99+
    2024-04-02
  • Java中实现多态性的方法有哪些
    本篇文章为大家展示了Java中实现多态性的方法有哪些,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。什么是多态面向对象的三大特性:封装、继承、多态。从一定角度来看,封装和继承几乎都是为多态而准备的。这...
    99+
    2023-05-31
    java 多态性 ava
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作