java中面向对象三大特性有哪些?

【护网必备】Windows平台shellcode免杀加载器 bypass:McAfee、金山(数字签名)、火绒、ESET、卡巴企业版(时间5s 抖动50 Sleep_mask)、360全家桶(物理机)、Norton(加白程序资源)、WDF(PC)、WDF(Server)、Symantec(加白程序资源)bypass:金山(数字签名)、火绒、ESET、360全家桶(物理机)、WDF(PC)、WDF(服务器提示复查(关云保护))、McAfee、Norton(加白程序资源)、卡巴企业版(时间5s 抖动50 Sleep_mask)必须使用Bof操作,shell运行就掉线。 阅读详情

何为多态?

多态,通俗一点说就是在完成某一个行为的时候,不同的对象会产生不同的形态。

比如说:打印机在完成打印行为的时候,可以根据不同的对象打印不同的类型,有黑白,有彩色等等,打印的结果是不一样的。

总的来说:同一件事情,发生在不同对象身上,就会产生不同的结果。

如何实现多态?

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

1. 必须在 继承 体系下

2. 子类必须要对父类中方法进行 重写

3. 通过父类的引用 调用 重写的方法

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

这里以一个支付的结果来作为测试:

<pre class="prettyprint hljs scala" style="padding: 0.5em; font-family: Menlo, Monaco, Consolas, &quot;Courier New&quot;, monospace; color: rgb(68, 68, 68); border-radius: 4px; display: block; margin: 0px 0px 1.5em; font-size: 14px; line-height: 1.5em; word-break: break-all; overflow-wrap: break-word; white-space: pre; background-color: rgb(246, 246, 246); border: none; overflow-x: auto; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-style: initial; text-decoration-color: initial;">//提供一个抽象类或者接口
//这里提供一个抽象类
public abstract class Pay {
   abstract String  PayMethod();
}

public  class PayPal extends Pay {

    @Override
   public String PayMethod() {
        System.out.println("支付宝Pay........");
        return "success";
    }
}

public class UnionPay extends Pay {
    @Override
  public  String PayMethod() {
        System.out.println("银联Pay........");
        return "success";
    }
}

public class WeChatPay extends Pay {

    @Override
    public  String PayMethod() {
        System.out.println("微信Pay........");
        return "success";
    }
}

public class Main {
    public static void main(String[] args) {
        //支付宝
        Pay pay1=new PayPal();
        pay1.PayMethod();
        //银联
        Pay pay2=new UnionPay();
        pay2.PayMethod();
        //微信
        Pay pay3=new WeChatPay();
        pay3.PayMethod();
    }

}

这就体现了多态。其中也包含了向上转型的方法。

什么是向上转型?

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

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

就比如上面的:

<pre class="hljs fsharp" style="padding: 0.5em; font-family: Menlo, Monaco, Consolas, &quot;Courier New&quot;, monospace; color: rgb(68, 68, 68); border-radius: 4px; display: block; margin: 0px 0px 0.75em; font-size: 14px; line-height: 1.5em; word-break: break-all; overflow-wrap: break-word; white-space: pre; background-color: rgb(246, 246, 246); border: none; overflow-x: auto; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-style: initial; text-decoration-color: initial;">//支付宝
        Pay pay1=new PayPal();
        pay1.PayMethod();

向上转型的 优点 :让代码实现更简单灵活。

向上转型的

缺陷

:不能调用到子类特有的方法。

有向上转型肯定会有向下转型啦!

什么是向下转型?

向上转型会导致无法调用子类特有的方法,但是有时候可能需要调用子类特有的方法,此时:将父类引用再还原为子类对象即可,即向下转换。

<pre class="prettyprint hljs java" style="padding: 0.5em; font-family: Menlo, Monaco, Consolas, &quot;Courier New&quot;, monospace; color: rgb(68, 68, 68); border-radius: 4px; display: block; margin: 0px 0px 1.5em; font-size: 14px; line-height: 1.5em; word-break: break-all; overflow-wrap: break-word; white-space: pre; background-color: rgb(246, 246, 246); border: none; overflow-x: auto; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-style: initial; text-decoration-color: initial;">public abstract class Pay {
   abstract String  PayMethod();
}

public  class PayPal extends Pay {

    @Override
   public String PayMethod() {
        System.out.println("支付宝Pay........");
        return "success";
    }
    public void prompt(){
        System.out.println("余额不足,请选择其他方式进行支付");
    }
}

public class Main {
    public static void main(String[] args) {
        //支付宝
        Pay pay1=new PayPal();
        pay1.PayMethod();

        //直接强转
        pay1=(PayPal)pay1;

        ((PayPal) pay1).prompt();
        //利用instanceof
        if(pay1 instanceof PayPal){
            pay1=(PayPal)pay1;
            ((PayPal) pay1).prompt();

        }

    }

}

注意:使用强转符 ()可能存在ClassCastException错误。

向下转型用的比较少,而且不安全,万一转换失败,运行时就会抛异常。Java中为了提高向下转型的安全性,引入了 instanceof ,如果该表达式为true,则可以安全转换。

多态的优点:

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

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

接口性(interface-ability)。多态是超类通过方法签名,向子类提供了一个共同接口,由子类来完善或者覆盖它而实现的。

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

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

需要注意的是要避免在构造方法中调用重写的方法。

尽量不要在构造器中调用方法(如果这个方法被子类重写, 就会触发动态绑定, 但是此时子类对象还没构造完成), 可能会出现一些隐藏的但是又极难发现的问题。

什么是静态绑定与动态绑定?

静态绑定:也称为前期绑定(早绑定),即在编译时,根据用户所传递实参类型就确定了具体调用那个方法。典型代表 方法重载 。

动态绑定:也称为后期绑定(晚绑定),即在编译时,不能确定方法的行为,需要等到程序运行时,才能够确定具体调用那个类的方法。

泛微OA集成阿里云短信(E9保姆教程) 阅读详情

相关推荐

win10下Miracast无线投屏使用教程及异常解决方案(超详细)

文章目录一、什么是Miracast?二、主流的无线投屏技术有哪些特点?三、如何查看自己的win10电脑是否支持Miracast无线投屏功能?四、win10电脑如何使用Miracast无线投屏功能? 一、什么是Miracast? Miracast是由Wi-Fi联盟于2012年所制定,以Wi-Fi直连(Wi-Fi Direct)为基础的无线显示标准。支持此标准的3C设备(如智能手机、电视、投影、电脑等...

帅气的小白的博客 44万+

Java面向对象编程之三大特性

一:面向对象编程三大特性 (1)继承 (2)封装 (3)多态 二:接口,内部类,抽象类 三:常见关键字:this,super,static,final

尚拙的博客 1万+

原创_新魔百和CM201-1鸿蒙架构当贝乐家语音安卓9线刷固件包刷机教程可救砖rom刷机包

不用担心变砖,因为系统内核会自动判断分区及CPU等级,假设你CPU是高于S905L3的那么。7.adb功能支持,系统增加开机自启功能,添加老人桌面模式,默认为年轻化桌面;所以我发的这个固件可适用于_cw_ys_zg_zn代工上生产的盒子进行刷机;5.CPU及GPU算法更改,当观看4K片源时,AI智能会自动优化系统后台进程,正如我所说,本固件是采用安卓公版镜像制作而成,那么代工厂也是使用的公版镜像,1.移植鸿蒙架构代码,完美融合安卓系统,增加系统的稳定性;刷机的时候 他会自动短接链接,所以不存在变砖。

a138088150的博客 1万+

JAVA面向对象三大特性

JAVA面向对象三大特性 文章目录JAVA面向对象三大特性面向对象面向对象生命周期封装概念:封装步骤:关于JAVA关键字this关键字构造方法:构造方法作用:继承概念:语法结构:继承与扩展方法的重载方法的覆盖final关键字super关键字继承和类实例化过程多态概念:作用:多态存在的三个必要条件多态的好处: Java 是面向对象的高级编程语言,类和对象是 Java 程序的构成核心。围绕着 Java...

dragon3100的博客 1232

基于Quartus II软件的FPGA综合实验——多功能数字钟

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录前言一、设计要求二、设计原理三、设计过程1.数码管扫描模块2.计时模块3.闹钟模块4.闹钟响铃模块5.数码管显示模块6.整点报时功能7.模式选择模块(计时器主控电路)四、实验中遇到的困难及解决方案五、总结 前言 FPGA综合实验——多功能数字钟 基于Quartus II软件 一、设计要求 设计一个能进行时、分、秒计时的十二小时制或二十四小时制的数字钟,并具有定时与闹钟功能,能在设定的时间发出闹铃音,能非常方便地对小时、分钟和秒进.

qq_53022342的博客 2万+

C#实战:如何用HslCommunication快速搞定三菱FX5U PLC通讯(附完整代码)

本文详细介绍了如何利用HslCommunication库在C#环境中快速实现与三菱FX5U PLC的通讯。通过实战代码演示,从环境搭建、建立连接、核心数据读写到构建健壮的监控服务,系统讲解了如何高效完成数据采集与交互,大幅提升工业自动化项目的开发效率。

s4t5u6v的博客 1199

Java面向对象三大特性

JAVA基础–面向对象三大特性 参考:https://www.cnblogs.com/hysum/p/7100874.html#_labelTop 1 封装 1.1 封装的概念 将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问。 好处: 只能通过规定的方法访问数据。 隐藏类的实现细节,方便修改和实现。 1.2 封装的使用 封装...

Thetop 1470

5G 网络的移动性管理上下文对比介绍

5G 网络的移动性管理上下文对比介绍 4G/5G MM移动性管理机制对比 5G引入了新移动性管理状态,通过mobility pattern(移动方式)实现按需的移动性管理等。 MM的相关状态分为一下几种: RM状态(用户注册管理 注册态/非注册态)和CM状态(用户连接态/空闲态)独立;RM状态标识UE是否注册到网络,CM状态标识UE和核心网的信令连接是否存在。 RAN侧引入RRC-inactive state:UE(用户端)对于CN(核心网)而言处于连接态,对RAN(接入网)而言处于Ld..

m0_59032675的博客 4817

Java面向对象三大特性深度解析

Java面向对象编程(OOP)是构建复杂软件系统的核心思想。而封装、继承、多态作为面向对象的三大特性,更是理解和掌握 Java 编程的基石。它们不仅规范了代码的结构,还提升了代码的可维护性、可复用性和扩展性。本文将通过原理剖析、代码示例和场景分析,全面解读这三大特性的本质与实践方法。

aa_hdkf_vg的博客 925

基于FPGA的TDC延迟链优化与码密度校准方法(1)——原理与实现

本文深入探讨了基于FPGA的时间数字转换器(TDC)延迟链非均匀性问题及其码密度校准方法。通过分析工艺偏差、温度电压影响等根源,详细介绍了码密度测试原理、逐位校准技术及气泡消除算法,并分享了自适应校准策略与多场景应用实践,有效提升TDC测量精度至皮秒级。

kiwi8的博客 488

手势识别器:实现手部动作识别器

在本篇文章中,我们将使用Python来实现一个简单的手部动作识别器。然后,我们通过循环从摄像头获取每一帧图像,并对每一帧图像进行处理。我们提取手部关键点并计算手势的特征向量,然后将其添加到特征列表和标签列表中。接下来,我们再次从摄像头获取每一帧图像,并进行手势识别。我们提取手部关键点并计算手势的特征向量,然后使用训练好的分类器来预测手势,并在图像上显示出来。在这个实现中,我们将使用MediaPipe库来检测和跟踪手部关键点,然后使用K最近邻(K-Nearest Neighbors)算法对手势进行分类。

BitSlinger的博客 237

Java面向对象的三大特性

Java面向对象的三大特性继承 关键字:extends 概念:继承机制是面向对象程序设计不可缺少的关键概念,是实现软件可重用的根基,是调高软件系统的可扩展性与可维护性的主要途径。所谓继承是指一个类的定义可以基于另外一个已经存在的类,即子类基于父类,从而实现父类代码的重用,子类能吸收已有类的数据属性和行为,并能扩展新的能力。 在Java中,类的继承是单继承。 继承中构造方法的调用子类构造方法总是先调用

Zhang1057503612的博客 693

R语言中的混淆矩阵(Confusion Matrix)是一种常用的评估多分类模型性能的工具

除了准确率,混淆矩阵还提供了其他有用的指标,如灵敏度(Sensitivity)、特异度(Specificity)、精确度(Precision)和召回率(Recall)。混淆矩阵通过比较模型预测结果与实际标签的一致性,帮助我们了解模型的分类准确性和错误类型。此外,混淆矩阵还提供了各种错误类型的统计信息,如假阳性(False Positive)和假阴性(False Negative)等。通过混淆矩阵,我们可以了解模型的整体性能和错误类型,从而对模型进行评估和改进。最后,为了更好地理解混淆矩阵的结果,可以使用。

HackSquad的博客 972

Java面向对象三大特性详解

一、封装 1、概念: 将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问。 2、好处: 只能通过规定的方法访问数据。 隐藏类的实例细节,方便修改和实现。 3、封装的实现步骤       需要注意:对封装的属性不一定要通过get/set方法,其他方法也可以对封装的属性进行操作。当然最好使用get/set方法,比较标准。 A、访问修饰...

Java笔记 4120

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

Java基础-面向对象三大特性

Java面向对象三大特性,封装,继承,多态

m0_75024203的博客 1290

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

Java——面向对象的三大特性

• 概念:让一个类(子类、派生类)可以继承另一个类(父类、基类)的属性和方法,子类还可扩展自身特有的属性和方法,实现代码复用。在 Java 中,通过 extends 关键字实现继承(一个子类只能直接继承一个父类,即单继承,但可通过接口实现类似多继承的效果 )。• 概念:把对象的属性(成员变量)和行为(成员方法)结合为一个整体,隐藏对象的实现细节,仅对外暴露有限的、可控的访问方式。◦ 建立类之间的层次关系,体现“is - a”关系(如“狗”是“动物”的子类 ),让程序结构更清晰,便于理解和扩展。

Q_Qi66的博客 368

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

java 对象的三大特性_Java面向对象的三大特性

Java面向对象的三大特性Java面向对象的三大特性分别为:封装、继承、多态,下面我们一起来详细了解一下!1.封装:说得通俗一点,就是把细节隐藏起来,把该公开的公开,把该私有的私有。那如何封装一个类?类中含属性和方法, 属性可有可无,并且应该设置为private.方法可有可无,对外的方法的应该公开,对内的方法应该私有.一个类的方法,大致有:构造方法 -> 可以生成存/取 属性值的方法,也就是...

weixin_39611070的博客 225

Java面向对象编程的三大特性

1. 面向对象编程的三大特性 Java 面向对象编程有三大特性:封装、继承、多态。 1.1 封装(Encapsulation) 封装 隐藏对象的属性和实现细节,仅对外公开访问方法,控制在程序中属性的读和写的访问级别。 1.1.1 封装的目的 增强安全性和简化编程,使用者不必了解具体的实现细节,而只要通过对外公开的访问方法,来使用类的成员。 1.1.2 封装的基本要求 把所有的属性私有化。 对每个属性提供 getter 和 setter 方法。 如果有一个带参的构造函数的话,那一定要写一个不带

GGGGGSole的博客 723

java面向对象三大特性难吗_JAVA面向对象的三大特性

JAVA面向对象的三大特性每一对象是其状态和行为的封装。类是按一定体系和层次安排的,使得子类可以从超类继承行为。在这个类层次体系中有一个根类,它是具有一般行为的类。Java程序是用类来组织的。下面是小编整理的关于JAVA面向对象的三大特性,希望大家认真阅读!封装性理解封装性概念封装是将代码及其处理的数据绑定在一起的一种编程机制,该机制保证了程序(方法)和数据(属性)都不受外部干扰且不被误用。理解封...

weixin_30128191的博客 194

JAVA面向对象的三大特性

JAVA中面向对象的三个特性的概念及其实现 java面向对象程序设计具有三个很重要的特点:封装、继承、多态。 封装是面向对象编程的核心思想。将对象的属性和行为封装起来,其载体就是类,类通常对客户隐藏其实现细节,就是封装的实现思想。例如用户在使用计算机时,只需要使用手指敲击键盘就可以实现一些功能,无需知道计算机内部是如何工作的,即使可能知道计算机的工作原理,但是在使用计算机的时候也并不完全依赖于计算...

qq_41583415的博客 216

Java面向对象三大特性的理解

Java面向对象三大特性:封装、继承、多态

liweihua1993的博客 554

java面向对象三大特性

java面向对象三大特性 封装 封装的作用: 1、对象的数据封装特性彻底消除了传统结构方法中数据与操作分离所带来的种种问题,提高了程序的可复用性和可维护性,降低了程序员保持数据与操作内容的负担。 2、对象的数据封装特性还可以把对象的私有数据和公共数据分离开,保护了私有数据,减少了可能的模块间干扰,达到降低程序复杂性、提高可控性的目的。 原文链接:Java封装_深海潜蛟的博客-优快云博客 通俗来说:设计一个类时,应该对成员变量的访问做出一些限定,不允许外界随意访问,这就需要实现类的封装。 类的封装,

m0_46217325的博客 212

Java面向对象的三大核心特性-火速收藏

一、Java面向对象的三大核心特性 正式开启新的学习之旅吧,加油加油加油!!! Java是一种面向对象编程语言(Object Oriented Programming Language,OOPL),面向对象简称OO(Object Oriented),20世纪80年代以后,有了面向对象分析(OOA)、面向对象设计(OOD)、面向对象程序设计(OOP)等新的系统开发方式模型的研究。 在程序开发初期人们使用结构化开发语言,但是随着软件的规模不断变得庞大,结构化语言的弊端也逐渐的暴露出来,开发周期延长,产品的质量

7旅病娘的博客 1204

Java 面向对象的三大特性

将数据(属性)和行为(方法)捆绑在一起,并对外隐藏实现细节。

记录学习的过程 522
上一篇: 带你深入实践springboot实战
下一篇: springboot配置 Druid 数据源及密码加密
Java_ttcd
博客等级 码龄4年 198粉丝 190原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值