Java基础—面向对象OOP—18三大特性:封装、继承与多态

news2024/12/26 17:44:43

由于本身理解还不是很到位,所以写的很绕,后续待补充优化

   1、封装(底层):该露的露,该藏的藏

  • 高内聚:类的内部数据操作细节自己完成,不允许外部干涉
  • 低耦合:仅暴露少量的方法给外部使用
  • 属性私有private,get/set
  • IDEA快捷键:alt+insert 快速插入getter、setter,同构造器
  • 一个不明白的点(不清楚是否重要,也不清楚答案是什么,后续待补充:private、public和static的区别--看下面的图
  • 私有的东西无法被继承

2、继承(宏观):扩展extends,是类和类之间的一种关系,还有依赖、组合、聚合

  • 在Java中所有类,都默认直接或间接继承Object类后续待补充
  • IDEA快捷键:光标在类中,点击ctrl+H ,查看继承关系
  • Java只有单继承,没有多继承:一个儿子只能有一个爸爸,一个爸爸可以有多个儿子
  • 私有的东西无法被继承

  •  super与this关键字 看着懵的话,之后应用了回头再看再补充,无需一直纠结(后续待补充)
  • IDEA的使用tip:可以新建file写笔记的

3、方法重写

为什么需要重写?因为父类的功能,子类不一定需要,或者不一定满足

IDEA快捷键:alt + insert 

关于重写:前提是需要有继承关系,子类重写父类的方法

1、方法名、参数列表必须相同

2、修饰符,范围可以扩大但不能缩小:public>protected>default>private

3、抛出的异常:范围可以缩小但不能扩大:如ClassNotFoundException(小) -->Exception(大)

重写是方法的重写,与属性无瓜

重写只与 非静态方法有关,与静态方法无瓜(比较下面两张图)

结论:(可以看蓝色o小圆点)

如果是静态方法:方法的调用仅与方法的左边有关,也就是定义的类型

如果是非静态方法:重写

换种好理解的说法:

有static时,fangfang调用Person类的方法,因为fangfang是用Person类定义的

没有static时,fangfang调用的是对象的方法,fangfang是用Student类new出来的(父类的引用指向了子类)

4、多态

  1. 自己理解:不管什么类型,左边决定有什么方法,右边决定用哪个构造器来初始化
  2. 多态的概念,可以理解为:方法的调用除了本类对象可以调用自己以外,在方法重写里还可以通过父类对象的引用来调用自己
  3. 注意事项:
  4. 是方法的多态,属性没有多态
  5. 父类和子类有联系 类型转换异常 ClassCastException
  6. 存在条件:继承关系,方法需要重写,父类引用指向子类对象
  7. 实现动态编译:类型:可扩展性
  8. 弹幕中说:编译看左边,运行看右边
  9. 对象能执行能执行哪些方法,主要看对象左边的类型,和右边关系不大
  10. 一个对象 实际类型是确定的,可以指向的引用类型就不确定了
  11. Student 能调用的方法都是自己的或者继承父类的
  12. Person类 父类型,可以指向子类,但是不能调用子类独有的方法

5、多态—instanceof 、引用类型的转换

instanceof:判断一个对象时什么类型是否存在父子关系

引用类型的转换:跟基础类型一样

高---低,需要强制类型转换

子类转换为父类,向上转型,可能丢失自己本来的一些方法,直接转换

抽象:封装、继承、多态

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1418929.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

休息日的思考与额外题——链表

文章目录 前言链表知识点 一、 92. 反转链表 II二、21. 合并两个有序链表总结 前言 一个本硕双非的小菜鸡,备战24年秋招,计划二刷完卡子哥的刷题计划,加油! 二刷决定精刷了,于是参加了卡子哥的刷题班,训练…

2023年算法SAO-CNN-BiLSTM-ATTENTION回归预测(matlab)

2023年算法SAO-CNN-BiLSTM-ATTENTION回归预测(matlab) SAO-CNN-BiLSTM-Attention雪消融优化器优化卷积-长短期记忆神经网络结合注意力机制的数据回归预测 Matlab语言。 雪消融优化器( SAO) 是受自然界中雪的升华和融化行为的启发,开发了一种…

Linux true/false区分

bash的数值代表和其它代表相反:0表示true;非0代表false。 #!/bin/sh PIDFILE"pid"# truenginx进程运行 falsenginx进程未运行 checkRunning(){# -f true表示普通文件if [ -f "$PIDFILE" ]; then# -z 字符串长度为0trueif [ -z &qu…

shell脚本——条件语句

目录 一、条件语句 1、test命令测试条件表达式 2、整数数值比较 3、字符串比较 4、逻辑测试(短路运算) 5、双中括号 二、if语句 1、 分支结构 1.1 单分支结果 1.2 双分支 1.3 多分支 2、case 一、条件语句 条件测试:判断某需求是…

IP关联是什么?有什么后果?如何防止电商账号因IP关联被封?

在跨境电商的世界里,IP关联给多账号运营的商家带来了挑战。比如,亚马逊IP关联规则的执行对于那些经营多个店铺的卖家来说可能是一个不小的障碍。IP关联的影响不只是限于亚马逊,其他平台如Instagram、Facebook也有类似的机制,在之前…

Note-归一化层和前向源码

本专栏主要是深度学习/自动驾驶相关的源码实现,获取全套代码请参考 目录 简介BN层计算过程参数说明验证问题:bn层前面的cov不需要bia的原因 LN层计算过程参数说明验证问题:transfomer用LN而不是BN的原因 简介 深度学习中常见的归一化层包括批量归一化(Batch Norma…

应急响应-流量分析

在应急响应中,有时需要用到流量分析工具,。当需要看到内部流量的具体情况时,就需要我们对网络通信进行抓包,并对数据包进行过滤分析,最常用的工具是Wireshark。 Wireshark是一个网络封包分析软件。网络封包分析软件的…

Redis面试(二)

1.Redis集群了解吗 前面说到了主从同步存在高可用和分布式问题,哨兵机制解决了高可用问题,而集群就是终极方案,一举解决高可用 和分布式问题。 1.数据分区:数据分区或称数据分片是集群最核心的功能,集群将数据分散到…

【人工智能】鲁滨逊归结原理-Python实现

一、实验目的 了解鲁滨逊归结算法原理,利用Python编写程序,实现鲁滨逊归结算法。 二、实验原理 鲁滨逊归结原理又称为消解原理,是鲁滨逊提出的一种证明子句集不可满足性,从而实现定理证明的一种理论及方法。它是机器定理证明的基…

项目解决方案:市小区高清视频监控平台联网整合设计方案(上)

目 录 一、项目需求 1.1业务需求 1.2技术需求 1.3 环境要求 1.3.1 硬件要求 1.3.2 技术服务要求 二、系统设计方案 2.1 视频监控平台基础功能设计 2.2 视频资源及联网设备编码与管理设计 2.2.1 全省现有联网视频资源属性 2.2.2 视频资源编码具体格…

任务修复实例(1)

实例1 任务名:增强防御(quest_template.id 8490) 涉及的两个数据表分别为 smart_script 和 creature_summon_groups smart_script Reactstate 取值参考源码 UnitDefines.h 的 ReactStates 定义,其中:0为被动&#…

第18章_JDK8-17新特性(下)(新语法结构,API的变化,其它结构变化,小结与展望)

文章目录 第18章_JDK8-17新特性(下)6. 新语法结构6.1 Java的REPL工具: jShell命令6.2 异常处理之try-catch资源关闭6.3 局部变量类型推断6.4 instanceof的模式匹配6.5 switch表达式6.6 文本块6.7 Record6.8 密封类 7. API的变化7.1 Optional类…

[docker] Docker镜像的创建以及Dockerfile的使用

一、Dokcer镜像的创建 创建镜像有三种方法,分别为基于已有镜像创建、基于本地模板创建以及基于Dockerfile创建。 1.1 基于现有镜像创建 (1)首先启动一个镜像,在容器里做修改docker run -it --name web centos:7 /bin/bash …

Docker 基础篇

目录 一、Docker 简介 1. Docker 2. Linux 容器 3. 传统虚拟机和容器的对比 4. Docker 的作用 5. Docker 的基本组成(Docker 三要素) 6. Docker 工作原理 7. Docker 架构 8. Docker 下载 二、Docker 安装 1. CentOS Docker 安装 2. CentOS8 …

03 Verilog HDL 语法

Verilog HDL(Hardware Description Language)是在 C 语言的基础上发展起来的一种硬件描述语言(用它可以表示逻辑电路图、逻辑表达式、数字逻辑系统所完成的逻辑功能等)具有灵活性高、易学易用等特点。Verilog HDL 可以在较短的时间…

Edius 9.0 下载安装教程,附安装包和工具,轻松解决软件安装

前言 Edius是一款非线性视频编辑软件,它可以帮助用户快速编辑一切,支持更多格式、更多分辨率而无需等待,无论是纪录片还是4K影视制作,软件都能很好的驾驭,是用户最喜欢的后期制作专业工具。 准备工作 1、Win7及以上…

如何做一个合格的产品经理

如何做一个合格的产品经理 如何做一个合格的产品经理 一、了解市场需求 产品经理的核心工作之一是了解市场需求。为了确保产品的成功,你需要密切关注市场动态,了解用户需求,分析竞争对手,并预测未来趋势。通过市场调查、用户访…

第十八回 林冲水寨大并火 晁盖梁山小夺泊-FreeBSD/Ubunut使用ssh的scp传输文件

何涛在得到知府命令后,带领官兵出发前往石碣村捉拿强盗。在接近石碣村时,他们遇到了一些打渔的人,得知阮小五、阮小七两兄弟在湖中居住,非乘船不能到达。何涛决定所有人都下马,一起乘船前往湖中寻找阮家兄弟。 在行船…

C++中的指针空值nullptr

一、nullptr的引入 在C98中,通常是用NULL或者0对指针变量进行初始化 int* p1 NULL; int* p2 0; NULL其实一个宏,本质是0,在传统C头文件stddef.h中给可以看到如下代码 #ifndef NULL #ifdef __cplusplus #define NULL 0 #else #define …

Unity 解释器模式(实例详解)

文章目录 示例1:基础解释器结构示例2:小于表达式(LessThanExpression)示例3:逻辑或表达式(OrExpression)示例4:逻辑非表达式(NotExpression)示例5&#xff1a…