JAVA_15

JAVA_15

  • JAVA_面向对象知识体系
    • 1.面向对象编程
    • 2.封装
    • 3.封装
    • 4.多态
    • 4.抽象类与抽象方法
    • 5.接口与内部类


JAVA_面向对象知识体系

1.面向对象编程

  1. 面向对象编程就是一种编程方法,它的思路是把程序中的数据和对数据的操作打包成一个个“对象”,然后这些对象之间通过互相调用的方式来完成程序的功能。你可以把这些对象看成是实际生活中的物品或者人,它们都有自己的“状态”和“行为”,并且能够与其他对象进行“交亘”。
  2. 面向对象编程(Object-Oriented Programming,OOP)的特点包括:
  3. 封装性:将对象的属性和行为封装在一起,形成一个独立的实体,外部程序无法直接访问对象的内部,只能通过特定的接口(即公开的方法)来访问。
  4. 继承性:可以通过继承现有类的属性和方法来创建新类,从而减少代码的冗余和提高代码的复用性。继承还有助于组织类的层次结构,使代码更易于维护和扩展。
  5. 多态性:同样的方法在不同的对象中可以有不同的实现方式,这就是多态性。多态性使得程序更加灵活,可以在运行时动态选择不同的方法实现。
  6. 总的来说,面向对象编程具有代码复用性高、结构清晰、易于维护、可扩展性好等特点,因此在软件开发中广泛应用。

2.封装

  1. 封装就是把一些数据或者代码包装起来,让外部的程序只能通过一定的的接口乘访问和操作这些数据或者代码,而不能直接访问和修改。这样可以保证数据和代码的安全性和完整性,同时也能够降低程序的复杂度,提高代码的可维护性和可读性。
  2. 封装的作用:
  3. 隐藏实现细节:封装可以将一个类的实现细节隐藏起来,只对外暴露公共接口。这样其他类就无法直接访问该类的属性和方法,从而提高了代码的安全性。
  4. 简化代码调用:封装可以将一组相关的操作封装成一个方法,从而简化代码的调用。这样,在其他类中调用该方法时,只需要知道方法的名称和参数即可,不需要了解方法的具体实现。
  5. 提高代码复用性:封装可以将一组相关的操作封装成一个类,从而提高代码的复用性。这样,在其他类中需要使用该类的功能时,只需要创建该类的对象即可,无需重新编写相关的代码。
  6. 提高代码的可维护性:封装可以将一个类的实现细节隐藏起来,从而使得类的实现细节对外部代码无影响。这样,当需要修改类的实现细节时,只需要修改类内部的实现,对外部代码没有任何影响,从而提高了代码的可维护性。

3.封装

  1. 继承是面向对象编程中的一个重要特性,它允许我们通过创建一而无需从头开始编写代和方法。这意味着我们可以在现有类的基础上创建一个更具体的类。而无需从头开始编写代码。比如说,我们可以从一个“动物"类继承出一个“猫”类,猫就会继承动物类的一些通用属性和方法,如“呼吸”、“吃东西“等等。
  2. 继承有助于减少代码的冗余,因为我们可以在新的类中重用现有类的代码,同时也方便了代码的维护。另外,继承还可以帮助我们组织类的层次结构,使得类之间的关系更加清晰明
  3. 在继承中,我们把原来的类称为父类或基类,新创建的类称为子类或派生类。子类可以继承父类的所有属性和方法,包括公共属性和方法,但是父类的私有属性和方法子类无法继承。子类还可以在继承的基础上添加新的属性和方法,或者覆盖父类的方法,从而实现更具体的功能。
  4. 总的来说,继承是面向对象编程中一种非常有用的特性,它可以帮助我们减少代码的兄余组织类的层次结构,提高代码的复用性和可维护性,
  5. 继承的作用:
  6. 提高代码重用性:继承可以使得子类继承父类的属性和方法,从而减少了代码的兄余提高了代码的重用性。
  7. 提高代码的可维护性:继承可以将代码分解为多个层次,每个层次都可以进行单独的维护和更新,从而提高了代码的可维护性。
  8. 提高代码的扩展性:继承可以在不改变现有代码的情况下扩展代码的功能,从而提高了代码的扩展性。
  9. 实现多态:继承是实现多态的基础,子类可以重写父类的方法,从而实现多态。
  10. 继承中的super
    在Java 中,super 关键字用于访问和调用父类的属性和方法,以及调用父类的构造方法。下面分别介绍下 super 关键字的用法:
  11. 访问父类的属性和方法:子类可以继承父类的属性和方法,但是如果子类中有与父类同名的属性或方法,就无法直接访问父类的同名属性或方法。在这种情况下,可以使用super 关键字来访问父类的属性或方法。例如,如果父类有一个name 属性和一个speak()方法,子类可以使用super.name 和 super.speak() 来访问和调用这些属性和方法。
  12. 调用父类的构造方法:在子类的构造方法中,i可以使用 super() 关键字来调用父类的构造方法,以便初始化从父类继承而来的属性。子类中的构造方法必须先调用父类的构造方法,再进行子类自己的初始化。如果子类没有显式地调用父类的构造方法,Java 编译器会自动调用默认的无参构造方法。例如,如果子类有一个构造方法,需要初始化从父类继承而来的 age 属性,可以使用 super(age) 来调用父类的构造方法,并传入年龄参数。
  13. 继承中的访问控制符:
  14. 在Java 中,protected 访问控制符用于控制类的成员(字段和方法)的访问范围。protected 成员可以被同一个包中的其他类访问,也可以被不同包中的子类访问。具体来说,protected 的作用包括以下几个方面:
  15. 子类可以访问父类中被 protected 修饰的成员。
  16. 在继承关系中,子类可以访问父类中被 protected 修饰的成员,包括属性和方法。这意味着子类可以直接访问父类中的 protected 成员,而不需要使用父类对象的引用来访问。
  17. 同一包中的其他类可以访问被 protected 修饰的成员。protected 成员可以被同一包中的其他类访问,即使这些类不是父类或子类关系。这使得在同一个包中的不同类之间可以共享成员,提高了代码的重用性。
  18. protected 成员对其他包中的类是不可见的,protected 成员对其他包中的类是不可见的,即使这些类是子类也是如此。只有在子类中才可以访问父类的 protected 成员。
  19. 总的来说,protected 的作用是提供一种在继承关系中共享成员的方式,同时限制了对外部的访问,提高了代码的安全性和可维护性。

4.多态

  1. 什么是多态:
    在面向对象编程中,多态(Polymorphism)是指同一类型的对象,在不同的情况下会表现出不同的行为特征,即在不同的上下文环境中具有不同的行为表现。多态是面向对象编程的重要特性之一,它可以让程序员编写出更灵活、更易于扩展的代码。
  2. 多态的作用:
  3. 代码重用:多态可以使得不同的类共享相同的代码实现,从而减少了代码的兄余,提高了代码的可维护性。
  4. 提高灵活性:多态可以使得同一个方法在不同的情况下具有不同的实现方式,从而使得代码更加灵活。
  5. 实现多态:多态是面向对象编程中的一个重要概念,它可以使得同一个方法名可以被不同的对象实现,从而实现多态。
  6. 简化代码:多态可以简化代码的实现,使得代码更加清晰易懂,提高了代码的可读性。
  7. 方法重写
    方法重写是指在子类中重新定义父类中已经定义的方法,使得子类对象可以使用自己的方法实现来替换父类对象的方法实现。在调用这些方法时,程序会根据对象的实际类型来确定具体要调用哪个方法。这种方式的多态称为运行时多态或动态多态。

4.抽象类与抽象方法

  1. 抽象类(Abstract Class)是在面向对象编程中用来作为其他类的基类(父类)的一种特殊类,它不能直接被实例化,只能被继承,而且必须被子类实现其抽象方法。抽象类不能被实例化是因为它可能包含一些未被实现的抽象方法,这些方法只是声明了方法签名,但没有实现方法体,因此不能被直接调用。如果一个类继承了一个抽象类,那么它必须实现所有的抽象方法,否则也必须声明为抽象类。
  2. 抽象类的作用:
  3. 定义规范:抽象类定义了一些通用的属性和方法,以供子类继承和实现。这种规范可以被多个类实现,从而实现代码的复用性。
  4. 实现多态:抽象类可以用来实现多态,即同一个方法名,不同的实现。子类继承抽象类后,必须实现其中的抽象方法,从而实现多态。
  5. 降低耦合:抽象类可以将一个类的实现与其接口分离,从而降低代码的耦合性,提高代码的灵活性和可扩展性。
  6. 增强安全性:抽象类可以用来限制某些代码的访问权限,从而增强代码的安全性。
  7. 代码重构:当我们需要对某个类进行重构时,可以将其中的一些通用的属性和方法提取到一个抽象类中,从而使得代码更加清晰和易于维护。
  8. 抽象方法(Abstract Method)是一种没有实现的方法,它只有方法签名,没有方法体,用abstract 关键字修饰,它必须在抽象类中声明。在一个抽象类中,可以包含抽象方法和具体方法(有方法体的方法)。抽象方法必须被声明在抽象类中,而具体方法可以在抽象类中实现或者在具体的子类中实现。一个子类必须实现它从父类继承的所有抽象方法,除非该子类也是抽象类。如果一个子类继承了一个抽象类,那么它必须实现所有的抽象方法,否则也必须声明为抽象类。

5.接口与内部类

  1. 在Java 中,接口(Interface)是一种抽象类型,它是一组抽象方法的集合,没有方法体只有方法名、参数列表和返回类型。接口可以看作是一种约定或契约,规定了一个类或多个类应该提供哪些方法,但是并不关心这些方法是如何实现的。接口可以被看作是一个完全抽象的类,它不能被实例化,但是可以被实现。一个类通过实现接口,来承诺实现接口中定义的所有方法。这种实现接口的类,称为接口的实现类(Implementation Class)。
  2. 接口的作用:
  3. 定义规范:Java接口定义了一组方法的规范,它规定了某些类需要实现哪些方法。这种规范可以被多个类实现,从而实现代码的复用性。
  4. 实现多态:Java接口可以用来实现多态,即同一个方法名,不同的实现。➌ 降
  5. 降低耦合:Java接口可以将一个类的实现与其接口分离,从而降低代码的耦合性,提高代码的灵活性和可扩展性。
  6. 增强安全性:Java接口可以用来限制某些代码的访问权限,从而增强代码的安全性。
  7. 促进分布式编程:lava接口可以用来定义网络协议或者API,从而促进分布式编程的发展。
  8. 内部类指的是定义在另一个类内部的类,它可以访问外部类的成员变量和方法,也可以被外部类访问。我们可以将内部类看作外部类的一个成员,就像一个成员变量或者成员方法样。内部类分为成员内部类、静态内部类、局部内部类和匿名内部类四种类型。它们的作用包括实现封装性、隐藏性、代码组织性和实现回调等功能。
  9. 内部类作用:
  10. 实现封装性:内部类可以访问外部类的私有属性和方法,从而实现封装性。
  11. 实现隐藏性:内部类可以隐藏实现细节,对外部类提供简洁的接口。
  12. 代码组织性:内部类可以将相关的代码组织在一起,提高代码的可读性和可维护性。
  13. 实现回调:内部类可以用来实现回调机制,即将一个对象传递给另一个对象,在后者发生某些事件时调用前者的方法。
  14. 实现多重继承:lava不支持多重继承,但是通过内部类可以模拟实现多重继承的功能。
  15. 实现接口的某些方法:内部类可以实现外部类或者其他类的接口的某些方法。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

nodejs+express+vue教辅课程辅助教学系统 43x2u前后端分离项目

目录 技术栈具体实现截图系统设计思路技术可行性nodejs类核心代码部分展示可行性论证研究方法解决的思路Express框架介绍源码获取/联系我 技术栈 该系统将采用B/S结构模式,开发软件有很多种可以用,本次开发用到的软件是vscode,用到的数据库是…

烧结银胶成为功率模块封装新宠

烧结银胶成为功率模块封装新宠 在科技日新月异的今天,材料科学作为推动工业进步的重要基石,正不断涌现出令人瞩目的创新成果。其中,善仁烧结银胶作为微电子封装领域的一项重大突破,正以其独特的性能优势,逐步成为连接…

Docker torchserve 部署模型流程

1.拉取官方镜像 地址: https://hub.docker.com/r/pytorch/torchserve/tags docker pull pytorch/torchserve:0.7.1-gpu2. docker启动指令 CPU docker run --rm -it -d -p 8380:8080 -p 8381:8081 --name torch-server -v /path/model-server/extra-files:/home/model-serve…

MySQL日志binlog和redo log区别

MySQL binlog简介 MySQL中有两类日志:binlog和redo log,分别有不同的作用和解决问题。binlog是归档日志,在MySQL server层的日志,适用于所有存储引擎,redo log是innodb特有日志用于crash-safe时恢复数据。 binlog和r…

【RabbitMQ】工作模式

工作模式概述 简单模式 简单模式中只存在一个生产者,只存在一个消费者。生产者生产消息,消费者消费消息。消息只能被消费一次,也称为点对点模式。 简单模式适合在消息只能被单个消费者处理的场景下存在。 工作队列模式(Work Qu…

Apache SeaTunnel Zeta引擎源码解析(三) Server端接收任务的执行流程

作者:刘乃杰 编辑整理:曾辉 引入 本系列文章是基于 Apache SeaTunnel 2.3.6版本,围绕Zeta引擎给大家介绍其任务是如何从提交到运行的全流程,希望通过这篇文档,对刚刚上手SeaTunnel的朋友提供一些帮助。 我们整体的文…

linux文件系统权限详解

注:目录的执行权限代表是否可以进入。 一、文件权限控制对文件的访问: 可以针对文件所属用户、所属组和其他用户可以设置不同的权限 权限具有优先级。user权限覆盖group权限,后者覆盖other权限。 有三种权限类别:读取、写入和执行 读权限:对文件:可读取文件…

[SAP ABAP] 修改内表数据

1.利用关键字修改数据 语法格式 MODIFY TABLE <itab> FTOM <wa> [TRANSPORTING f1 f2...].<itab>&#xff1a;代表内表 <wa>&#xff1a;代表工作区 示例1 内表修改前的数据 将上述数据行中的AGE字段值更改为25&#xff0c;SEX字段值更改为女 输出结…

5.基础漏洞——文件上传漏洞

目录 一.文件上传漏洞原理 二.文件上传漏洞条件&#xff1a; 三.上传限制手段分为两大类 (1)客户端校验 (2)服务端校验 四.具体实现 1.文件上传漏洞——绕过JS检测 2.文件上传漏洞——绕过MIME类型检测 3.文件上传漏洞——绕过黑名单检测 绕过方式:(1) 绕过方式:(2) …

城市脉络下的空间句法:整合度与选择度的深度解析

上回写过一篇&#xff0c;基于空间句法的路网整合度、选择度分析&#xff0c;当时碍于篇幅和侧重点&#xff0c;主要讲了如何安装sDNA这个插件来实现路网的整合度、选择度分析&#xff0c;并且分析部分也只是画了几条简单的线段&#xff0c;这次我们深化一下原理和指标的解析&a…

二十种编程语言庆祝中秋节

二十种编程语言庆祝中秋节 文章目录 二十种编程语言庆祝中秋节中秋快乐&#xff01;家人们 &#x1f973;一 Python二 C三 C四 Java五 C#六 Perl七 Go八 Asp九 PHP十 JavaScript十一 JavaScript HTML十二 Visual Basic十三 早期 VB十四 Visual C十五 Delphi十六 Shell十七 Cobo…

Codeforces practice C++ 2024/9/11 - 2024/9/18

D. Mathematical Problem Codeforces Round 954 (Div. 3) 原题链接&#xff1a;https://codeforces.com/contest/1986/problem/D 题目标签分类&#xff1a;brute force&#xff0c;dp&#xff0c;greedy&#xff0c;implementation&#xff0c;math&#xff0c;two pointers…

svn回退到以前历史版本修改并上传

svn回退到以前版本&#xff0c;并在以前版本上修改代码后&#xff0c;上传到svn库当中&#xff0c;如下步骤&#xff1a; 3、 以回退到版本号4为例&#xff1a;选中版本号4&#xff0c;右键->Revert to this version,在出现的对话框中 点击yes&#xff01; 4、 5、

【C++ Primer Plus习题】16.8

大家好,这里是国中之林! ❥前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站。有兴趣的可以点点进去看看← 问题: 解答: main.cpp #include <iostream> #include <set> #includ…

矩阵分析 学习笔记3 多项式矩阵 jordan标准型

多项式矩阵 就是说这个矩阵里面的各个元素都是多项式&#xff0c;多项式的主角是类目大&#xff08;自变量&#xff09;。 多项式矩阵的秩 0多项式就是完全0的那种&#xff0c;就一个0&#xff0c;类目大都没有了。 多项式矩阵的秩和带一个类目大进去变成普通矩阵的秩不是一回…

深度学习|损失函数:网络参数优化基准

文章目录 引言均方误差计算示例矩阵形式代码实现 交叉熵误差计算示例代码实现 绝对误差计算示例代码实现 Hinge Loss计算示例代码实现 Kullback-Leibler Divergence计算示例代码实现 结语 引言 在上文「深度学习&#xff5c;模型训练&#xff1a;手写 SimpleNet」中&#xff0…

十款主流的供应链管理系统盘点,优缺点一目了然!

本文将盘点十款供应链管理系统&#xff0c;为企业选型提供参考&#xff01; 想象一下&#xff0c;一家企业在生产和销售产品的过程中&#xff0c;原材料供应不及时、库存积压严重、物流配送混乱。这时&#xff0c;供应链管理系统就如同一位高效的指挥家&#xff0c;将各个环节紧…

离散制造 vs 流程制造:锚定精准制造未来,从装配线到化学反应,实时数据集成在制造业案例中的多维应用

使用 TapData&#xff0c;化繁为简&#xff0c;摆脱手动搭建、维护数据管道的诸多烦扰&#xff0c;轻量替代 OGG, Kettle 等同步工具&#xff0c;以及基于 Kafka 的 ETL 解决方案&#xff0c;「CDC 流处理 数据集成」组合拳&#xff0c;加速仓内数据流转&#xff0c;帮助企业…

Linux权限理解【Shell的理解】【linux权限的概念、管理、切换】【粘滞位理解】

目录 Linux权限理解1.Xshell命令以及运行原理2.linux权限的学习2.1linux权限的切换2.2linux权限的概念2.3linux权限管理2.3.1linux中文件访问者的分类2.3.2文件类型和访问权限(文件属性)2.3.2.1文件类型2.3.2.2文件权限拓展—文件的起始权限 2.3.3文件权限管理2.3.4文件权限的应…

腾讯云Ubuntu系统安装宝塔,配置Java环境,运行spring boot项目

致谢 本次学习宝塔部署spring boot项目&#xff0c;参考如下资料 https://www.cnblogs.com/daen/p/15997872.html 系统安装宝塔 直接用的腾讯云云服务器面板上的登录&#xff0c;你可以换成 xshell 进入宝塔官网&#xff1a; https://www.bt.cn/new/download.html 我们采…