首页 > 编程语言 >Java中多态的学习

Java中多态的学习

时间:2024-09-05 18:36:51浏览次数:4  
标签:Java 方式 实现 多态 接口 学习 机制 重写

多态


目录

多态的概念

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

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

为什么要使用多态

  • 消除类型之间的耦合关系
  • 可替换性
  • 可扩充性
  • 接口性
  • 灵活性
  • 简化性

多态存在的三个必要条件

  • 继承
  • 重写
  • 父类引用指向子类对象:Parent p = new Child();

多态的实现方式

方式一:重写:

方式二:接口

  • 生活中的接口最具代表性的就是插座,例如一个三接头的插头都能接在三孔插座中,因为这个是每个国家都有各自规定的接口规则,有可能到国外就不行,那是因为国外自己定义的接口类型。
  • java中的接口类似于生活中的接口,就是一些方法特征的集合,但没有方法的实现。

方式三:抽象类和抽象方法

多态的分类

方式一

通用的多态

  • 参数多态

​ 泛型

  • 包含多态

​ 重写

特定的多态

  • 过载多态

​ 重载

  • 强制多态

​ 类型自动转换

方式二

  • 静态多态(Static Polymorphism):也称为编译时多态,主要通过模板(Templates)或函数重载(Function Overloading)实现。这种多态在编译时就已经确定了具体的操作,因此具有类型安全和运行效率高的特点。
  • 动态多态(Dynamic Polymorphism):也称为运行时多态,主要通过类的继承机制和虚函数(Virtual Functions)实现。这种多态在运行时才能确定具体的操作,因此能够处理异质对象集合,提高程序的灵活性和可扩展性。

多态的机制原理

多态的机制原理主要是通过虚函数表和虚函数指针实现的,它们允许在运行时根据对象的实际类型来确定调用哪个函数,从而实现了相同操作在不同对象上产生不同行为的效果。这种机制提高了程序的灵活性和可扩展性,是面向对象编程中不可或缺的一部分。

标签:Java,方式,实现,多态,接口,学习,机制,重写
From: https://www.cnblogs.com/BingBing-8888/p/18399024

相关文章

  • JAVA记录
    记录工作中用到的一些工具、方法、问题等。远程调试远程调试 启动端口8084,debug监听端口是8085java-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:8085-jar/opt/yinsuankeji/digit.jar--server.port=8084&JDK17安装#java17安装sudoaptupd......
  • 图形学学习(二):Shader输入输出及自制Shader类
    在LearnOpengl学了Shader的输入输出和自制Shader类,输入输出还是好理解的,自制Shader类的讲解我感觉还是用代码更直观一些(个人感觉),这两天看了一下秋招的面试面经,想了想明年找工作的问题,刺激,十分感慨,优秀的人还是太多了,不过最重要的还是得做好自己!!!Shader的输入输出总结有两种......
  • Java运算符(详解)
    前言:    Java中运算符有哪些?    大致分为:    算术运算符、关系运算符、逻辑运算符、位运算符、移位运算符、条件运算符接下来,一一分析。算术运算符: 基本运算符:    加减乘除,是最基本的运算符。例子:publicstaticvoidmain(Str......
  • (免费源码)计算机毕业设计必看必学 原创定制程序 java、PHP、python、小程序、文案全套
    摘 要信息化社会内需要与之针对性的信息获取途径,但是途径的扩展基本上为人们所努力的方向,由于站在的角度存在偏差,人们经常能够获得不同类型信息,这也是技术最为难以攻克的课题。针对高校知识共享系统等问题,对高校知识共享系统进行研究分析,然后开发设计出高校知识共享系统以......
  • Java多线程
    进程and线程    进程是程序的一次动态执行过程。经历了从代码加载、执行到执行完毕的一个完整过程;(由于CPU的执行速度很快,使得所有的进程像是“同时”执行一样)多线程是实现并发机制的一种有效手段。线程是比进程更小的执行单位,多线程是指一个进程在执行过程中可以产......
  • Java项目: 基于SpringBoot+mysql蜗牛兼职网兼职平台管理系统(含源码+数据库+答辩PPT+
    一、项目简介本项目是一套基于SpringBoot+mysql蜗牛兼职网兼职平台管理系统包含:项目源码、数据库脚本等,该项目附带全部源码可作为毕设使用。项目都经过严格调试,eclipse或者idea确保可以运行!该系统功能完善、界面美观、操作简单、功能齐全、管理便捷,具有很高的实际应用......
  • 在深度学习中的“维度”
    在深度学习中,“维度”指的是数据的结构或数组的每个轴的长度。每个维度表示数据的不同特征或轴。为了更好地理解维度,我们可以通过一些示例来说明。1.一维数据示例:向量[2,4,6,8]维度:1(这是一个一维数组)长度:4(数组中有4个元素)2.二维数据示例:矩阵[[1,2,3],[4,5,6......
  • java.lang.ClassNotFoundException: net.logstash.logback.appender.LogstashTcpSocke
    出现以下错误,是因为项目缺少依赖:atorg.springframework.boot.logging.logback.LogbackLoggingSystem.reportConfigurationErrorsIfNecessary(LogbackLoggingSystem.java:189)atorg.springframework.boot.logging.logback.LogbackLoggingSystem.loadConfiguration(Log......
  • java知识点——String类常用方法
    字符串常用方法: 方法描述int字符串.length()获取字符串长度boolean字符串.equals比较字符串内容是否相等boolean字符串1.equalsIgnoreCase(字符串2)不分大小写比较内容String字符串.toLowerCase()将字符串全部转成小写的String字符串.toUpperCas......
  • 深度学习系列(1) TensorFlow---Tensorflow学习路线
    学习TensorFlow是掌握深度学习和机器学习的关键一步。以下是一个详细的TensorFlow学习路线图,涵盖从基础到高级的知识点和实践,帮助你逐步掌握TensorFlow并应用于实际问题中。1.基础知识1.1了解TensorFlow概念:什么是TensorFlow?它的用途和应用场景。安装:如何在本地机......