Java 面向对象的三大特征

java的编译时多态和运行时多态 java的编译时多态和运行时多态,保证一看就会 立即下载

封装性
一.思想
在这里插入图片描述
把该隐藏的隐藏起来,该暴露的暴露出来。

二.问题的引入
创建一个类的对象之后,可以通过"对象.属性"的方式对对象的属性进行赋值。赋值操作要受到数据类型和存储范围的制约。在实际情况中,我们往往需要给属性加额外的制约条件,这个条件不能在属性声明时体现,只能通过方法对其进行添加。
为了避免客户再用"对象.属性"的方式对对象的属性进行赋值,则需要把属性设为私有的(private)。此时属性体现了封装性。

三.封装性的体现
我们将类的属性私有化(private),同时提供公共(public)的方法来获取(getXxx)和设置(setXxx)此属性的值。
拓展:封装性的体现:①如上 ②不对外暴露的私有的方法 ③单例模式…

四.封装性的体现,需要权限修饰符来配合。

  1. Java规定的4种权限修饰符(从小到大):private,缺省,protected,public
    在这里插入图片描述
  2. 4种权限修饰符可以修饰类及其类的内部结构:属性,方法,构造器,内部类
    具体而言,4种都可以修饰类的内部结构:属性,方法,构造器,内部类。修饰类的话,只能使用缺省,public。
  3. 总结封装性:Java提供了4种权限修饰符来修饰类及其类的内部结构,体现类及其类的内部结构被调用时可见性的大小。在这里插入图片描述

继承性
在这里插入图片描述
一.好处
1.减少了代码的冗余,提高了代码的复用性。
2.便于功能的扩展。
3.为之后多态性的使用提供前提。

二.格式
class A extends B{}
A:子类,派生类,subclass
B:父类,超类,基类,superclass
1.体现:一旦子类A继承父类B之后,子类A就获取了父类B中声明的所有的属性和方法。
特别 :父类中声明的private的属性或方法,子类继承父类之后,仍然认为获取了父类私有的结构。只是因为封装性的影响,使得子类不能直接调用父类的结构而已。
2.子类继承父类之后,还可以声明自己特有的属性或方法,实现功能的拓展。
子类和父类的关系,不同于子集和集合的关系。
extends:延展,拓展。

三.Java中关于继承性的规定
1.一个类可以被多个子类继承。
2.Java中类的单继承性:一个类只能有一个父类。
在这里插入图片描述
3.子父类是个相对概念。子类直接继承的父类,称为直接父类。间接继承的父类,称为间接父类。
4.子类继承父类之后,就获得了直接父类以及所有间接父类的属性和方法。
5.子类可以获取父类中private权限的属性和方法。(继承性和封装性 不冲突)。

四.注意点
1.如果我们没有显式一个类的父类的话,则此类继承于Java.lang.Object类。
2.所有的Java类(除了Java.lang.Object类之外)都直接或间接的继承于Java.lang.Object类。

五.子类对象实例化的过程
1.从结果上来看:(继承性) 子类继承父类之后,就会获得所有父类声明的属性和方法。创建子类的对象,在堆空间中,就会加载所有父类中声明的属性。
2.从过程上来看:通过子类的构造器创建子类对象时,我们一定会直接或间接的调用父类的构造器,进而调用父类的父类的构造器,直到调用了java.lang.Object类中空参的构造器。正因为加载过所有的父类的结构,所以才可以在内存中看到父类的结构,子类对象才可以考虑调用。
ps:虽然调用了多个构造器,但是至始至终都只创建了一个对象,即当下new的子类对象。
在这里插入图片描述

多态性(运行时行为)
在这里插入图片描述
1.可以理解成一个事物的各种形态。
2.对象的多态性:父类的引用指向子类的对象(子类的对象赋给父类的使用)。
3.多态的使用:虚拟方法的调用
有了对象的多态性,编译期只能调用父类声明的方法,运行期实际执行的是子类重写父类的方法。
总结:编译看左边,运行看右边。
4.使用前提: ①类的继承关系 ②方法的重写
5.对象的多态性,只适用于方法,不适用于属性(编译和运行都看左边)。
6.重载不表现多态性,重写表现多态性。
7.抽象类,接口的使用肯定体现多态性。(抽象类,接口不能实例化)
在这里插入图片描述
在这里插入图片描述
向下转型:使用强制类型转换符。
在这里插入图片描述
使用强转时,可能会出现ClassCastException异常。为了避免在向下转型时出现此异常,我们在向下转型之前,先进行instanceof的判断,一旦返回true,则继续向下转型;否则不进行。
a instanceof A :判断对象a是否是类A的实例。如果是,返回true;否则返回false。
如果a instanceof A返回true,a instanceof B也返回true,则说明类B是类A的父类。

在这里插入图片描述

运行时实现Java的多态性 运行时多态性是面向对象程序设计代码重用的一个最强大机制,动态性的概念也可以被说成“一个接口,多个方法”。Java实现运行时多态性的基础是动态方法调度,它是一种在运行时而不是在编译期调用重载方法的机制,下面就继承和接口实现两方面谈谈java运行时多态性的实现。   一、通过继承中超类对象引用变量引用子类对象来实现   举例说明:   //定义超类superA   class superA   {   int i = 100;   void fun()   {   System.out.println(“This is superA”);   }   }   //定义superA的子类subB   立即下载

相关推荐

从平面到立体:一张图看懂MOSFET、FinFET到GAAFET的演变史(附结构对比图)

本文深入解析了半导体晶体管从平面MOSFET到三维FinFET,再到全环绕栅极GAAFET的技术演进历程。通过结构对比图和物理原理分析,揭示了每一次创新如何解决短沟道效应等关键挑战,推动芯片性能提升。特别关注GAAFET作为最新技术突破的架构特点和性能优势。

weixin_30892037的博客 699

Java运行时多态

Java运行时多态 即使getInfo()是基类Publication的方法,它也可以调用其基类的重写方法getType()和getDetails()。 确切地将调用getType()和getDetails的哪个“版本”是在运行时确定的,具体取决于对象的具体类型。 class Publication { private String title; public Publication(String title) { this.title = title; }

Y_goblin的博客 636

IPMI的SOL (Serial Over LAN) 和 UART

UART全名是Universal Asynchronous Receiver/Transmitter(通用異步接收/发送器),它是一个常用的異步串行传输协议。透过UART传输前,接收方须要先知道传输方的鲍率(Baud rate):单位时间内,讯号状态变化的次数。例如 115200 bps,表示每秒会传送115200个bits--> 因此读取率就是 1/115200=8.6微秒读取一次讯号。封包内的资料长度:通常是 8bits。

yeiris的博客 1万+

【Java】Java中的多态

在Java中,多态是面向对象编程中的一个重要概念,它允许不同类型的对象对同一方法进行不同的实现。具体来说,多态性指的是通过父类的引用变量来引用子类的对象,从而实现对不同对象的统一操作。例如:狗和猫都是动物,动物共同的行为都有吃这个动作,而狗可以表现为啃骨头,猫则可以表现为吃老鼠。这就是多态的表现,即同一件事情,发生在不同对象的身上,就会产生不同的结果。在面向对象编程中,重写(Override)指的是子类重新定义和实现了从父类继承而来的方法,以改变方法的行为。

qq_61635026的博客 3万+

开源多波束声呐数据集:从原始回波到AI识别的关键一步

本文探讨了开源多波束前视声呐数据集(UATD)在AI目标识别中的关键作用。通过分析原始回波数据与处理后数据的差异,揭示了开源数据集如何降低研究成本、提升实验可重复性,并加速技术迭代。文章还详细解析了UATD数据集的结构、实战应用技巧及从原始数据到AI模型的完整流程,为水下目标识别研究提供了宝贵参考。

weixin_28675839的博客 424

电机控制实战:SVPWM五段式与七段式算法在STM32上的实现对比

本文深入对比了SVPWM五段式与七段式算法在STM32上的实现效果,详细分析了两种算法在占空比控制、开关损耗和波形质量等方面的差异。通过实测数据,为工程师提供了针对不同应用场景的选型建议,包括电池供电设备和高精度伺服控制系统的优化方案。

h6i7j8的博客 584

Java中编译时多态与运行时多态

文章目录1. 什么是多态2. 编译时多态3. 运行时多态总结Reference 口诀:成员变量,静态方法看左边;非静态方法:编译看左边,运行看右边 当父类变量引用子类对象时(Father f = new Son();),在这个引用变量f指向的对象中,它的成员变量和静态方法与父类是一致的,他的非静态方法,在编译时是与父类一致的,运行时却与子类一致(发生了复写) 1. 什么是多态 多态是指允许不同子类型的对象对同一行为作出不同的响应。例如在生活中,比如跑的动作,小猫、小狗和大象,跑起来是不一样的。再比如飞

xylitolz的博客 9381

Qt数据导出实战:从SQLite到CSV的完整流程(附内存优化技巧)

本文详细介绍了在Qt框架下,将SQLite数据库中的数据高效导出为CSV格式的完整流程。针对大数据量场景,重点分享了分块读取、流式写入等内存优化技巧,有效解决了嵌入式或资源受限环境中导出功能的内存占用与性能瓶颈问题,并提供了健壮的代码实现方案。

weixin_29313547的博客 342

java面向对象三大特性之多态---编译时多态和运行时多态详解

一.引言 1.什么是多态? 说到重载和重写,大家可能都知道。它们都是多态性的体现,那么说什么是多态呢?多态是指允许不同子类型的对象对同一行为作出不同的响应。例如在生活中,比如跑的动作,小猫、小狗和大象,跑起来是不一样的。再比如飞的动作,昆虫、鸟类和飞机,飞起来也 是不一样的。可见,同一行为,通过不同的事物,可以体现出来的不同的形态。多态描述的就是这样的状态。 2.多态的分类. 多态性分为编译时的多...

weixin_43951932的博客 7010

手把手教你学Simulink——四开关 Buck‑Boost(FSBB)变换器的无缝模式切换仿真

本文详细介绍了四开关Buck-Boost(FSBB)变换器的Simulink仿真方法,重点解决模式切换时的直通风险和输出电压波动问题。通过统一电压PI控制、迟滞比较模式仲裁(Buck/Boost/Pass-Through)和200ns死区设计,实现了Vin从26V到22V变化时Vout稳定在12V±0.15V。关键步骤包括:搭建功率级电路、Stateflow模式判断、PI控制器输出占空比映射(Buck模式D≈Vo/Vin,Boost模式D≈1-Vo/Vin),以及带死区的PWM信号分配。仿真验证了切换过程中

MHD0815的博客 117

爬取B站评论+AI情感分析:Python批量抓数据+BERT正负向分类(全流程)

B站作为年轻群体聚集的内容平台,评论区蕴含海量用户真实态度(如好评、吐槽、中立观点),是情感分析的优质数据源!本文分享完整流程:批量爬取B站视频评论→数据清洗去噪→BERT模型情感分类→可视化分析,基于预训练BERT模型实现高精度正负向判断,新手也能快速复刻情感分析系统! 前置配置(关键!获取B站API访问权限) B站评论通过官方API接口返回,无需复杂解析,只需配置用户Cookie即可正常请求: 2. 完整代码(直接复制运行) 三、使用步骤(5步搞定,新手友好) 步骤1:配置关键参数 打开,在类中修改

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 1069

【Java基础】Java 面向对象的三大特征

在 Java 编程的领域中,面向对象编程(Object - Oriented Programming,OOP)是其核心思想,而封装、继承和多态这三大特征则是 OOP 的基石。它们为开发者提供了强大的工具,使得代码更加模块化、可维护、可扩展以及可复用。封装、继承和多态是 Java 面向对象编程的三大核心特征,它们相互关联、相互促进,共同构建了 Java 强大的面向对象编程体系。封装通过访问修饰符和访问器方法将数据和操作封装在一起,保护了数据的安全性,提高了代码的可维护性和可复用性。

小李同学的博客 1705

【C语言学习疑难杂症】第20期:0x00007FF7F2821964处引发的异常0xC0000005写入位置 0x0000000000000

检查代码中是否存在野指针访问的情况,确保在进行写入操作之前,内存已经被正确分配或初始化,并且在使用完毕后进行了正确的释放。空指针访问:代码尝试在空指针地址(0x0000000000000000)处进行写入操作,导致访问冲突。检查代码中是否存在数组越界的情况,确保在进行写入操作之前,数组的索引值在合法范围内。检查代码中是否存在空指针访问的情况,确保在进行写入操作之前,指针已经被正确初始化。野指针访问:代码尝试在已释放或未初始化的内存地址进行写入操作,导致访问冲突。

学无止境 828

7.Java面向对象的三大特征1

7.Java面向对象的三大特征1 标签(空格分隔): 6Java基础 面向对象的三大基本特征 封装 继承 多态 一、封装 A、含义:将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问 B、封装的好处 1、只能通过规定方法访问数据 2、隐藏类的实现细节 3、方便加入控制语句 4、方便修改实现 C、设计原则: 把不想让外界知道...

weixin_43487902的博客 223

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

Java中面向对象三大特征总结

JAVA中面向对象的三大特征:         面向对象具有继承性(Inheritance)         面向对象具有多态性(Polymorphism)         面向对象具有封装性(Encapsulation) 一、继承          多个类具有共同的属性(成员变量)与行为(成员方法)的时候,将这些共同的部分抽取出来定义到一个公共的类中,其他及各类可以与这个公共的类形成继

Wei_HHH的博客 1万+

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

Java面向对象的三大特征

Java面向对象的三大特征为:封装、继承和多态。 1.封装 Java中的封装是指一个类把自己内部的实现细节进行隐藏,只暴露对外的接口(setter和getter方法)。封装又分为属性的封装和方法的封装。把属性定义为私有的,它们通过setter和getter方法来对属性的值进行设定和获取。 public class Person { private int id; private String name; private Person person; public int

Wik- 1万+

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

面向对象三大特征的理解初始理解封装继承多态 初始理解 其实这些知识很早就有接触,而且一些概念也牢记于心了。自己叙述面向对象的特征会是这样的: 面向对象的三大特征是封装、继承和多态。封装是对代码的封装以实现迪内聚高耦合的设计,使代码更安全且具有良好的扩展性。继承是父类产生子类的过程,子类可以使用父类的非私有的属性和方法。多态是一个对象在不同时刻可以表现出不同状态的现象。外加Animal和Cat的例子。 这一段时间敲了不少的Java代码,在敲代码的过程中想了无数次的面向对象这几个概念,对他们有了更深的了解,在这

FYSGXFZ的博客 1886

java面向对象三大特征及五大原则

java面向对象 一、java面向对象的三大特征 1、封装(Encapsulation) 封转是指属性私有化 根据需要提供setter和getter方法来访问属性 隐藏具体属性和实现细节,仅对外开放接口 控制程序中属性的访问级别 目的:增强数据安全性,不能让其他用户随意访问和修改数据,简化编程,使用者不必在意具体实现细节,而只是通过外部接口即可访问类的成员 2、继承(Extend) 继承是指将...

King的博客 1万+

java面向对象三大特征

定义了一个类A,在定义另一类B时,发现类B的功能与类A相似。考虑B继承于A。

2402_86577162的博客 2030

Java中面向对象三大特征

也就是说在这里"人"是多态的, 在不同的形态时,特征行为是不一样的, 这里的"人", 同时有两种形态,一种是教师形态,一种是学生形态,所对应的特征行为分别是"授课"与"做作业". Java中面向对象三大特征 2012-02-10 00:12 提问者: 匿名 等4人 如题! 我来帮他解答 网友推荐答案 2011-08-06 23:36taotling|当前分类:1...

weixin_30302609的博客 94

面向对象三大特征(Java学习)

面向:拿,找对象:能干活的东西面向对象编程:拿东西过来做对应的事情让编程变得更简单,有什么事,找对象,调方法就行;降低我们的学习成本,可以少学、少记,或者压根不用学,不用记对象有哪些方法,有需要时去找就行。继承是面向对象的三大特征之一,可以让类与类之间产生子父的关系可以把多个子类中重复的代码抽取到父类中,子类可以继续使用,减少代码冗余,提高代码的复用性在继承体系中,子类出现了和父类中一摸一样的方法声明,我们就称子类的这个方法是重写的方法;

m0_73313056的博客 1130

Java面向对象——三大特征

Java面向对象——三大特征 面向对象三大特征 一、 封装 从广义上来说,封装就是将物品,保管起来、封存起来 面向对象上说的封装,是一种特指: 将类的属性私有化(不再为外界提供直接访问属性的方式), 提供对应的getter和setter方法来访问和设置属性。 封装的目的:数据的安全性和私密性 封装的优点 良好的封装能够减少耦合。 类内部的结构可以自由修改。 可以对成员变量进行更精确的控制。 隐藏信息,实现细节。 代码示例: public class Animal { private

fakertop的博客 178

Java—— 一篇文章学会面向对象的三大特征

封装:什么是封装,封装思想的好处,标准的JavaBean类。继承:什么是继承,继承的格式,使用继承的好处,什么时候用继承,继承的特点,子类到底能继承父类中的哪些内容,继承中成员变量访问特点,继承中成员方法访问特点,继承中构造方法访问特点,this、super使用总结,继承的标准JavaBean类。多态:什么是多态,多态的前提,多态的格式,多态的好处,多态调用成员的特点,多态的优势,多态的弊端。

zjy_ccccc的博客 1126

java5-面向对象的三大特征

设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的代码设计的经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。毫无疑问,设计模式于己于他人于系统都是多赢的,设计模式使代码编制真正工程化,设计模式是软件工程的基石,如同大厦的一块块砖石一样。项目中合理的运用设计模式可以完美的解决很多问题,每种模式在现在中都有相应的原理来与之对应,每一个模式描述了一个在我们周围不断重复发生的问题,以及该问题的核心解决方案,这也是它能被广泛应用的原因。

zhaogodzero的博客 1142
上一篇: Java 属性 方法 构造器 代码块
下一篇: Object类 包装类 内部类
ZoeLandia
博客等级 码龄6年 734粉丝 183原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值