Java 多态的好处

UE5 SplineMesh与StaticMesh性能对比:生成1000米路径的帧率与内存实测 本文深度对比了UE5中SplineMesh与StaticMesh在生成1000米路径时的性能差异,包括帧率、内存占用及实现复杂度。实测数据显示,SplineMesh在Draw Call优化和动态变形场景中表现更优,而StaticMesh适合需要复杂材质变化的场景。文章还提供了优化技巧和选型指南,帮助开发者根据项目需求做出科学决策。 阅读详情

什么是多态

  1. 面向对象的三大特性:封装、继承、多态。从一定角度来看,封装和继承几乎都是为多态而准备的。这是我们最后一个概念,也是最重要的知识点。
  2. 多态的定义:指允许不同类的对象对同一消息做出响应。即同一消息可以根据发送对象的不同而采用多种不同的行为方式。(发送消息就是函数调用)
  3. 实现多态的技术称为:动态绑定(dynamic binding),是指在执行期间判断所引用对象的实际类型,根据其实际的类型调用其相应的方法。
  4. 多态的作用:消除类型之间的耦合关系。
  5. 现实中,关于多态的例子不胜枚举。比方说按下 F1 键这个动作,如果当前在 Flash 界面下弹出的就是 AS 3 的帮助文档;如果当前在 Word 下弹出的就是 Word 帮助;在 Windows 下弹出的就是 Windows 帮助和支持。同一个事件发生在不同的对象上会产生不同的结果。

多态存在的三个必要条件

  • 要有继承;
  • 要有重写;
  • 父类引用指向子类对象。
package dd20161114_2;
/**
父类pet
*/
public class Pet {
    public  void eat() {
        System.out.println("吃饭");
    }
}


package dd20161114_2;

public class Dog extends Pet {
    public  void eat() {
        // TODO Auto-generated method stub
        System.out.println("狗啃骨头");
        this.hight=5;
    }
}

package dd20161114_2;

public class Cat extends Pet{
    public  void eat() {
        // TODO Auto-generated method stub
        System.out.println("猫吃鱼");
    }
}

三个类,Dog和Cat分别继承了Pet类

package dd20161114_2;

public class Master1 {
public static void main(String[] args) {
    //dog对象实例化
        Dog dog=new Dog();
        eat(dog);
    //cat对象实例化
        Cat cat=new Cat();
        eat(cat);
    //Pet对象实例化
        Pet pet=new Dog();
        pet=new Cat();
        eat(pet);

    }
    public static void eat(Pet pet){

        pet.eat();
    }
}

输出结果:
狗啃骨头
猫吃鱼
猫吃鱼
从输出结果中可以看出,eat方法需要传递的参数为Pet的一个对象,但是当我传递它的子类的时候也可以,而且调用了相应的方法。我还可以通过实例化子类对象获得父类声明的对象,调用方法的时候它会自动去找对应子类的方法,这就是对象的向上转型和向下转型

向上转型

父类对象通过子类对象去实例化,实际上就是对象的向上转型。向上转型是不需要进行强制类型转换的,但是向上转型会丢失精度。

向下转型

所谓向下转型,也就是说父类的对象可以转换为子类对象,但是需要注意的是,这时则必须要进行强制的类型转换。

多态的好处

  1. 可替换性(substitutability)。多态对已存在代码具有可替换性。例如,多态对圆Circle类工作,对其他任何圆形几何体,如圆环,也同样工作。
  2. 可扩充性(extensibility)。多态对代码具有可扩充性。增加新的子类不影响已存在类的多态性、继承性,以及其他特性的运行和操作。实际上新加子类更容易获得多态功能。例如,在实现了圆锥、半圆锥以及半球体的多态基础上,很容易增添球体类的多态性。
  3. 接口性(interface-ability)。多态是超类通过方法签名,向子类提供了一个共同接口,由子类来完善或者覆盖它而实现的。如图8.3 所示。图中超类Shape规定了两个实现多态的接口方法,computeArea()以及computeVolume()。子类,如Circle和Sphere为了实现多态,完善或者覆盖这两个接口方法。
  4. 灵活性(flexibility)。它在应用中体现了灵活多样的操作,提高了使用效率。
  5. 简化性(simplicity)。多态简化对应用软件的代码编写和修改过程,尤其在处理大量对象的运算和操作时,这个特点尤为突出和重要。

子代父类实例化,然后就相当于一个父亲有很多儿子,送快递的给这个父亲的儿子送东西,他只需要送到父亲的家就行了,至于具体是那个儿子的,父亲还会分不清自己的儿子么,所以你就不用操心了。

使用多态是一种好习惯

多态方式声明是一种好的习惯。当我们创建的类,使用时,只用到它的超类或接口定义的方法时,我们可以将其索引声明为它的超类或接口类型。

它的好处是,如果某天我们对这个接口方法的实现方式变了,对这个接口又有一个新的实现类,我们的程序也需要使用最新的实现方式,此时只要将对象实现修改一下,索引无需变化。

比如Map< String,String> map = new HashMap < String,String>();想换成HashTable实现,可以Map< String,String> map = new HashTable < String,String>();

比如写一个方法,参数要求传递List类型,你就可以用List list = new ArrayList()中的list传递,但是你写成ArrayList list = new ArrayList()是传递不进去的。尽管方法处理时都一样。另外,方法还可以根据你传递的不同list(ArrayList或者LinkList)进行不同处理。

在Java编程思想这本书中有介绍

Buck-Boost电路实战:如何用LM2596模块快速搭建升降压电源(附元件选型指南) 本文详细介绍了如何使用LM2596模块快速搭建Buck-Boost升降压电路,包括硬件选型、电路搭建、示波器实测和进阶技巧。通过实测数据和避坑指南,帮助电子工程师解决电压不稳定、效率低下等常见问题,提升DC-DC变换器的设计水平。 阅读详情

相关推荐

PCIE6.0协议学习小记-Flit_Mode

PCIE6.0学习

code_aJack的博客 4633

【超经典】Java多态有什么好处?怎样用?

多态可以分为变量的多态,方法的多态,类的多态.我这里强调的是类的多态,这是在以后的工作中经常会用到的。多态的表现形式有方法重载,方法改写,多态变量和泛型。重载是一种静态的多态性,在程序编译时确定被调用的方法,称为早绑定。而多态变量和改写相结合之后,方法的调用在运行时才能确定,是动态的多态性,称为晚绑定。 首先,有这样一个系统:有个学生从兰理工毕业了,做得还不错.买了辆捷达汽车.这个系统应

guomutian911的专栏 1万+

在Redroid容器中构建Frida RPC服务:自动化生成淘宝X-Sign签名参数

本文详细介绍了在Redroid容器中构建Frida RPC服务,实现自动化生成淘宝X-Sign等签名参数的完整方案。通过逆向分析定位关键方法,定制Redroid系统使Frida-Server常驻运行,并编写Frida脚本将签名方法暴露为RPC接口,最终封装为可远程调用的微服务,解决了签名生成的可移植性与工程化难题。

ice55的博客 643

【Java】多态的优势和弊端

1、多态的优势定义方法的时候,如果使用父类作为形参,那么这个方法可以接收所有子类对象,体现多态的扩展性与便利。2、多态的弊端是什么?不能使用子类的特有功能。如果想要强行使用子类的特有功能,可以进行类型转换。3、引用数据类型的类型转换,有几种方式?引用类型的类型转换其实分为两种:自动类型转换、强制类型转换。在刚刚,重点学习的是第二种(强制类型转换)。这里解释一下自动类型转换:例如下面代码,将创建的子类对象赋值给父类类型的变量,由小变大,这个就是自动类型转换。强制类型转化:将父类类型的变量,强转为。

qq_39921135的博客 1630

Synopsys PCIe IP 实战笔记:手把手教你配置本地数字回环(PIPE/RMMI)

本文详细介绍了Synopsys PCIe IP本地数字回环(PIPE/RMMI)的配置与调试全流程,涵盖硬件连接、寄存器操作及实战技巧。通过数字回环模式,开发者可在无真实对端设备的情况下验证PCIe接口功能,适用于芯片验证和FPGA原型开发。文章还提供了常见问题排查和性能优化建议,助力高效完成协议解析与调试。

weixin_30394669的博客 322

VirtualBox虚拟机拖放文件总失败?手把手教你配置双向拖放与共享文件夹(Ubuntu版)

本文详细指导如何在VirtualBox的Ubuntu虚拟机中配置高效的数据交换方案。核心是安装VirtualBox Guest Additions,并在此基础上开启双向拖放与共享粘贴板功能,同时建立稳定的共享文件夹,彻底解决主机与虚拟机间文件传输失败的问题,构建无缝的跨系统工作环境。

weixin_29245767的博客 232

多态的好处 (Java)

在程序运行时,相同类型的变量可以呈现出不同的行为特征,这就是多态。多态的作用在于,它可以提高程序的扩展性。 (前父后子),父类型的引用指向子类型的对象 多态除了代码的复用,还可以解耦。然而为什么要解耦?耦合度讲的是模块模块之间,代码代码之间的关联度,通过对系统的分析把他分解成一个一个子模块,子模块提供稳定的接口,达到降低系统耦合度的的目的,模块模块之间尽量使用模块接口访问,而不是随意引用其他模块的成员变量。 对象的多态(核心,重点,也是最困难的一部分): (1)一个对象的编译类型和运行类型可以不一致 (2)

qq_43054129的博客 5694

Simulink仿真避坑指南:如何设置步长、powergui和模块采样时间才能让控制周期更稳定

本文深入解析Simulink仿真中步长、powergui和模块采样时间的协同配置方法,帮助工程师解决控制周期不稳定问题。通过实际案例和参数调优技巧,指导用户精准设置仿真参数,确保电机控制、电力电子系统等工业仿真结果的可靠性。

weixin_42524762的博客 418

教妹学Java(三十六):Java 多态的好处

多态有什么好处?

沉默王二 4812

黑猫带你学UFS协议第13篇:UFS初始化详解(Boot Operation)

本文详细解析了UFS设备的初始化过程,包括部分初始化、加载启动代码(可选)和初始化完成三个阶段。重点介绍了如何通过设备描述符和逻辑单元描述符配置引导特性,以及如何从UFS设备加载启动代码。内容适用于嵌入式硬件和存储领域的开发者。

黑猫奥利奥的博客 3554

Java中什么是多态?多态的优势和劣势是什么?

面向对象的三大特征:封装性、继承性、多态性,多态性就是多态,多态是在封装的升华,可以说没有封装就么有多态。

qq_46906413的博客 1万+

光学防抖OIS介绍与标定

前言:先看一下有无ois系统的效果。 1. OIS系统的作用就是消除镜头的抖动。 Gyro感受方向,Hall感受位移,Actuator驱动马达来矫正抖动方向和位移。 2.ois系统的结构构成 从上面来看ois系统主要有Hall,...

camerall 1万+

Java多态&多态的好处&多态的使用

一、多态 –1、概念 同一对象,在不同时刻具有不同的形态。 –2、特点 –前提: 发生继承关系 + 方法重写 –口诀1:父类引用指向子类对象 –Animal a = new Dog(); –口诀2:多态中,编译看左边,运行看右边 –编译看左边:想要保存成功,使用父类提供的功能 –运行看右边:想要结果,找子类 –3、入门案例 package com.xsd.multi; //这类用来 测试 多态 public class Test2_Multi { public static void mai

weixin_46437527的博客 2889

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

java多态的好处_java 多态的好处

/*对象的多态性。class 动物{}class 猫 extends 动物{}class 狗 extends 动物{}猫 x = new 猫();动物 x = new 猫();//一个对象,两种形态。猫这类事物即具备者猫的形态,又具备着动物的形态。这就是对象的多态性。简单说:就是一个对象对应着不同类型.多态在代码中的体现:父类或者接口的引用指向其子类的对象。多态的好处:提高了代码的扩展性,前期定义...

weixin_32701893的博客 341

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Java 中多态的好处

多态的好处: * 1)提高了代码的复用性(由继承保证) * 2)提高了代码的扩展性(由多态来保证) //动物类 class Animal{ public void eat() { System.out.println("动物需要吃饭"); } public void sleep() { System.out.println("动物都需要休息"); } } //定义一个猫类 class Cat extends Animal{ @Override public void eat() ..

weixin_57219176的博客 3718

java中认识多态和多态的好处

1、对象多态(People Student People Teacher)2.行为多态:同一个方法,有不同的表现行式多态的好处:1.多态可以实现耦合,右边对象可以随意切换。

wjinndnd的博客 357

什么是Java的多态?多态的好处?

System.out.println("动物吃饭");@OverrideSystem.out.println("猫吃鱼");@OverrideSystem.out.println("狗吃骨头");

cleble的专栏 219

Java多态性理解,好处及精典实例

核心:1、多态就是指程序中定义的引用变量所指向的具体类型和通过该引用变量发出的方法调用在编译时并不确定,而是在程序运行期间才确定,即一个引用变量倒底会指向哪个类的实例对象,该引用变量发出的方法调用到底是哪个类中实现的方法,必须在由程序运行期间才能决定。因为在程序运行时才确定具体的类,这样,不用修改源程序代码,就可以让引用变量绑定到各种不同的类实现上,从而导致该引用调用的具体方法随之改变,即不修改程...

gulugulu的博客 3万+

java中多态,多态访问特点,多态的好处和弊端

1.多态 2.多态访问特点 package java_learn; /* 多态: 多态成员访问特点: 1)成员变量:编译看左边,执行看左边; 2)成员方法:编译看左边,执行看右边。 为什么不一样?--因为成员方法有重写,而成员变量没有。 */ public class Cat extends Animal{ public int age=20; ...

Kongjiangezi的博客 398

java多态的好处6,Java-多态

Java-多态Thorn•2019 年 07 月 26 日1.定义左父右子就是多态多态就是一种对象的多种形态父类对象指向子类对象2.实现方法格式:父类名称 对象名 = new 子类名称();或接口名称 对象名 = new 实现类();例:public class DemoMulti {public static void main(String[] args) {Fu li = new Zi(...

weixin_36065817的博客 256

Java学习笔记--多态:多态的介绍,多态的基本使用,多态的条件下成员的访问特点,多态的好处

Java学习笔记--多态:多态的介绍,多态的基本使用,多态的条件下成员的访问特点,多态的好处

THRUSTER11111的博客 447

java中多态的作用,多态的好处,以及为什么要用多态?

看了这个,我终于知道了为什么要用多态了 看了大量的资料和视频之后,我终于搞清了多态的作用了,废话不多说,直接上干货! 多态的好处: 1.提高了代码的可维护性 2.提高了代码的扩展性 多态的作用: 可以当做形式参数,可以接受任意子类对象 多态的弊端: 不能使用子类特有的属性和行为 案例演示: ...

qq_42268090的博客 1万+

java 多态有什么好处_java - 多态性的好处

java - 多态性的好处当我开始寻找多态性的好处时,我在这里找到了这个问题。 但在这里我无法找到答案。 让我告诉我想找到什么。 这里我有一些课程:class CoolingMachines{public void startMachine(){//No implementationion}public void stopMachine(){//No implementationion}}cla...

weixin_39976413的博客 431

java:关于多态,继承,接口的好处。

使用提供了更大的灵活性和可扩展性,使得代码更具可维护性和可读性。而直接使用则限制了你只能使用Car类型,失去了多态性带来的优势。

m0_74217856的博客 1027

java 多态_java编程笔记,多态的好处和弊端

测试代码:1.创建Animal.java类作为父类2.创建Cat.java类作为Animal的子类3.创建一个Dog.java类作为Animal的子类4.创建Test.java测试类代码说明:多态的好处并不仅仅是 父类引用指向子类对象(Animal animal = new Dog()),这样的话我们不能调用Dog子类中特用的方法和属性,我们在创建对象的时候直接创建子类对象更方便(Dog g = ...

weixin_39727005的博客 269

java多态的优点_对java中多态的理解(多态的定义以及使用多态的好处,有具体代码示例展示)...

一,为了理解多态,我们先给出一个示例代码示例:(打印多种图形)class Shape{ 定义一个图形类作为父类public void draw(){//啥都不用干}}class Cycle extends Shape{@Override //声明重写父类中的方法public void draw(){System.out.println("⚪");}}class Rect extends S...

weixin_29877175的博客 864
上一篇: Java 接口
下一篇: Java instanceof关键字
彼天
博客等级 码龄11年 37粉丝 85原创
评论 13
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值