iis服务器助手广告
返回顶部
首页 > 资讯 > 精选 >关于Java三大特性之多态的总结
  • 628
分享到

关于Java三大特性之多态的总结

java三大特性多态 2023-05-30 21:05:14 628人浏览 安东尼
摘要

面向对象的三大特性:封装、继承、多态。从一定角度来看,封装和继承几乎都是为多态而准备的。这是我们最后一个概念,也是最重要的知识点。定义:多态:指允许不同类的对象对同一消息做出响应。即同一消息可以根据发送对象的不同而采用多种不同的行为方式。(

面向对象的三大特性:封装、继承、多态。从一定角度来看,封装和继承几乎都是为多态而准备的。这是我们最后一个概念,也是最重要的知识点。

定义:

多态:指允许不同类的对象对同一消息做出响应。即同一消息可以根据发送对象的不同而采用多种不同的行为方式。(发送消息就是函数调用)

实现多态的技术称为:动态绑定(dynamicbinding),是指在执行期间判断所引用对象的实际类型,根据其实际的类型调用其相应的方法。

作用:消除类型之间的耦合关系。

现实中,关于多态的例子不胜枚举。比方说按下F1键这个动作,如果当前在Flash界面下弹出的就是AS3的帮助文档;如果当前在Word下弹出的就是Word帮助;在windows下弹出的就是Windows帮助和支持。同一个事件发生在不同的对象上会产生不同的结果。

下面是多态存在的三个必要条件,要求大家做梦时都能背出来!

多态存在的三个必要条件

一、要有继承;

二、要有重写;

三、父类引用指向子类对象。

多态的好处:

1)可替换性(substitutability):多态对已存在代码具有可替换性。例如,多态对圆Circle类工作,对其他任何圆形几何体,如圆环,也同样工作。

2)可扩充性(extensibility):多态对代码具有可扩充性。增加新的子类不影响已存在类的多态性、继承性,以及其他特性的运行和操作。实际上新加子类更容易获得多态功能。例如,在实现了圆锥、半圆锥以及半球体的多态基础上,很容易增添球体类的多态性。

3)接口性(interface-ability):多态是超类通过方法签名,向子类提供了一个共同接口,由子类来完善或者覆盖它而实现的。如图8.3所示。图中超类Shape规定了两个实现多态的接口方法,computeArea()以及computeVolume()。子类,如Circle和Sphere为了实现多态,完善或者覆盖这两个接口方法。

4)灵活性(flexibility):它在应用中体现了灵活多样的操作,提高了使用效率。

5)简化性(simplicity):多态简化对应用软件的代码编写和修改过程,尤其在处理大量对象的运算和操作时,这个特点尤为突出和重要。

猫狗案例代码

class Animal {public void eat(){System.out.println("eat");}public void sleep(){System.out.println("sleep");}}class Dog extends Animal {public void eat(){System.out.println("狗吃肉");}public void sleep(){System.out.println("狗站着睡觉");}}class Cat extends Animal {public void eat() {System.out.println("猫吃鱼");}public void sleep() {System.out.println("猫趴着睡觉");}}class Pig extends Animal {public void eat() {System.out.println("猪吃白菜");}public void sleep() {System.out.println("猪侧着睡");}}//针对动物操作的工具类class AnimalTool {private AnimalTool(){}public static void useAnimal(Animal a) {a.eat();a.sleep();}//把所有的可能都归为动物类}class DuoTaiDemo2 {public static void main(String[] args) {//我喜欢猫,就养了一只Cat c = new Cat();c.eat();c.sleep();//我很喜欢猫,所以,又养了一只Cat c2 = new Cat();c2.eat();c2.sleep();//我特别喜欢猫,又养了一只Cat c3 = new Cat();c3.eat();c3.sleep();//...System.out.println("--------------");//问题来了,我养了很多只猫,每次创建对象是可以接受的//但是呢?调用方法,你不觉得很相似吗?仅仅是对象名不一样。//我们准备用方法改进//调用方式改进版本//useCat(c);//useCat(c2);//useCat(c3);//AnimalTool.useCat(c);//AnimalTool.useCat(c2);//AnimalTool.useCat(c3);AnimalTool.useAnimal(c);AnimalTool.useAnimal(c2);AnimalTool.useAnimal(c3);System.out.println("--------------");//我喜欢狗Dog d = new Dog();Dog d2 = new Dog();Dog d3 = new Dog();//AnimalTool.useDog(d);//AnimalTool.useDog(d2);//AnimalTool.useDog(d3);AnimalTool.useAnimal(d);AnimalTool.useAnimal(d2);AnimalTool.useAnimal(d3);System.out.println("--------------");//我喜欢宠物猪//定义一个猪类,它要继承自动物,提供两个方法,并且还得在工具类中添加该类方法调用Pig p = new Pig();Pig p2 = new Pig();Pig p3 = new Pig();//AnimalTool.usePig(p);//AnimalTool.usePig(p2);//AnimalTool.usePig(p3);AnimalTool.useAnimal(p);AnimalTool.useAnimal(p2);AnimalTool.useAnimal(p3);System.out.println("--------------");//我喜欢宠物狼,老虎,豹子...//定义对应的类,继承自动物,提供对应的方法重写,并在工具类添加方法调用//前面几个必须写,我是没有意见的//但是,工具类每次都改,麻烦不//我就想,你能不能不改了//太简单:把所有的动物都写上。问题是名字是什么呢?到底哪些需要被加入呢?//改用另一种解决方案。}}

--结束END--

本文标题: 关于Java三大特性之多态的总结

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

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

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 关于Java三大特性之多态的总结
    面向对象的三大特性:封装、继承、多态。从一定角度来看,封装和继承几乎都是为多态而准备的。这是我们最后一个概念,也是最重要的知识点。定义:多态:指允许不同类的对象对同一消息做出响应。即同一消息可以根据发送对象的不同而采用多种不同的行为方式。(...
    99+
    2023-05-30
    java 三大特性 多态
  • Java三大特性之多态详解
    目录概述引入定义多态的体现多态的好处引用类型转换向上转型向下转型为什么要转型转型的异常概述 引入 多态是继封装、继承之后,面向对象的第三大特性。 生活中,比如跑的动作,小猫、小狗和大...
    99+
    2022-11-13
    Java 特性 多态 Java多态
  • Java三大特征之多态
    文章目录 一、多态的概念二、多态实现条件三、重写四、向上转型和向下转型4.1向上转型4.2向下转型 五、多态的优缺点六、避免在构造方法中调用重写的方法 一、多态的概念 多态的概念:通俗来说,就是多种形态,具体点就是去完成某个...
    99+
    2023-08-19
    java 开发语言
  • Java超详细讲解三大特性之一的多态
    目录多态性instanceof 关键字的使用==和equals()区别object类中toString()的使用static关键字的使用总结多态性 1理解多态性:可以理解为一个事物的...
    99+
    2024-04-02
  • 关于React状态管理的三个规则总结
    目录前言No.1 一个关注点 No.2 提取复杂的状态逻辑 No.3 提取多个状态操作 总结 前言 React 组件内部的状态是在渲染过程之间保持不变的封装数据。useState()...
    99+
    2024-04-02
  • 关于Javascript中值得学习的特性总结
    目录可选链操作符(Optional Chaining Operator)空值合并运算符(Nullish Coalescing Operator)Promise.allSettled(...
    99+
    2023-05-19
    Javascript特性
  • Java三大特性之继承详解
    目录概述由来定义好处继承的格式继承后的特点—成员变量成员变量不重名成员变量重名继承后的特点—成员方法成员方法不重名成员方法重名—重写(Overri...
    99+
    2022-11-13
    Java 特性 继承 Java 继承
  • Java三大特性之封装详解
    目录封装概述概述原则封装的步骤封装的操作—private关键字private的含义private的使用格式封装优化1—this关键字this的含义this使用...
    99+
    2022-11-13
    Java 特性 封装 Java 封装
  • Java面试之高级特性基础总结
    目录1.为什么 Java 中只有值传递2.static 关键字使用场景3.Exception 和 Error 有什么区别4.Checked Exception 和 Unchecked...
    99+
    2023-01-11
    Java高级特性基础 Java高级特性
  • Python面向对象的三大特性封装、继承、多态
    Python是一门面向对象的语言。面向对象都有三大特性:封装、继承、多态。 下面分别来说说这三大特性: 1、封装 隐藏对象的属性和实现细节,仅对外提供公共访问方式。在python中用...
    99+
    2024-04-02
  • JavaOOP三大特征之封装继承与多态详解
    目录封装继承多态OOP语言的三大特征即:面向对象的三个比较重要的思想 封装 官话:将数据和操作数据的方法进行有机结合,隐藏对象的属性和实现细节,仅对外公开接口进行交互 通俗讲,不让类...
    99+
    2024-04-02
  • 关于Java多线程上下文切换的总结
    目录什么是上下文切换上下文切换代码测试引起线程上下文切换的原因如何减少上下文切换什么是上下文切换 即使是单核CPU也支持多线程执行代码,CPU通过给每个线程分配CPU时间片来实现这个...
    99+
    2023-05-19
    Java 多线程 Java 上下文切换
  • Java超详细讲解三大特性之一的封装
    目录封装封装的概念Java中的包java中类的成员-构造器java中的this关键字总结说到面向对象则不得不提面向对象的三大特征:封装,继承,多态。那么今天就和大家先来介绍什么是封装...
    99+
    2024-04-02
  • 关于Numpy之repeat、tile的用法总结
    repeat函数的作用:①扩充数组元素 ②降低数组维度 numpy.repeat(a, repeats, axis=None):若axis=None,对于多维数组而言,可以将多维数...
    99+
    2024-04-02
  • python学习之对象的三大特性
    在面向对象程序设计中,对象可以看做是数据(特性)以及由一系列可以存取、操作这些数据的方法所组成的集合。编写代码时,我们可以将所有功能都写在一个文件里,这样也是可行的,但是这样不利于代码的维护,你总不希望维护代码前,还需要从头至尾的通读一遍...
    99+
    2023-01-30
    三大 特性 对象
  • Java超详细讲解三大特性之一的继承
    目录继承的概念方法的重写super关键字的使用super调用构造器总结继承的概念 继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,...
    99+
    2024-04-02
  • java的三大特性怎么使用
    这篇文章主要介绍了java的三大特性怎么使用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇java的三大特性怎么使用文章都会有所收获,下面我们一起来看看吧。java的三大特性是:1、封装,就是将类的某些信息隐藏...
    99+
    2023-07-04
  • Java面向对象的三大特性
    本篇内容主要讲解“Java面向对象的三大特性”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Java面向对象的三大特性”吧!Java面向对象三大特性面向对象简称 OO(Object Oriente...
    99+
    2023-06-02
  • AJPFX关于Java NIO的概述总结
    Java NIO 由以下几个核心部分组成:ChannelsBuffersSelectors虽然Java NIO 中除此之外还有很多类和组件,但在我看来,Channel,Buffer 和 Selector 构成了核心的API。其它组件,如Pi...
    99+
    2023-06-02
  • Java轻松掌握面向对象的三大特性封装与继承和多态
    目录1.封装1.介绍2.封装的理解和好处3.封装的实现步骤2.继承1.介绍2.继承的基本语法3.继承的使用细节3.super关键字1.基本介绍2.基本语法3.细节与好处4.super...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作