【自学笔记】01Java基础-07面向对象基础-01封装

记录学习Java基础中有关面向对象编程的基础知识,包括面向对象思想,构造方法,封装思想,JavaBean。

1 面向对象概述

1.1 什么是面向对象编程

严谨来说
  面向对象编程(Object-Oriented Programming,简称 OOP)是一种程序设计范式或编程方法论,它基于“对象”这一核心概念来组织和管理计算机程序的结构。在OOP中,数据和处理这些数据的方法被捆绑在一起,形成了一个称为“对象”的自包含单元。对象是对现实世界实体的一种抽象模拟,它们拥有状态(属性或变量)和行为(方法或函数),通过封装、继承和多态等机制来实现复用、模块化以及灵活的设计。
简单来说:
  对象就是名词,如动物植物,猫狗…面向对象编程,就是拿这些对象进行代码设计。

1.2 什么是类

  类是对象共同特征的描述。对象是类的具体实例。
例如“动物类”下的猫对象,狗对象;也可以是“猫类”下的狸猫对象,橘猫对象;

1.3 如何设计类

  Java中,必须先设计类,才能创建其实例对象
在这里插入图片描述
在这里插入图片描述

1.4 类声明注意事项

在这里插入图片描述

2 构造方法(构造器)

2.1 什么是构造方法(构造器)

  构造方法(Constructor)是面向对象编程语言中的一个特殊成员函数,它与类同名,用于初始化新创建的对象实例的状态。当使用new关键字创建类的一个实例时,构造方法会被自动调用。
  简单来说,构造方法即创建对象的方法
在这里插入图片描述
在这里插入图片描述

2.2 构造方法有什么特点

  1. 构造方法的名称必须与类名完全相同。
  2. 构造方法没有返回类型,包括void类型也不可以声明。
  3. 当创建一个类的新实例时,构造方法会被隐式调用,程序员不能直接调用构造方法。
  4. 如果不显式定义构造方法,编译器会为该类提供一个默认构造方法,这个默认构造方法不带任何参数且不执行任何操作(如果类中没有其他构造方法的话)。
  5. 构造方法可以重载,即在同一个类中可以有多个构造方法,它们之间通过参数列表的不同来区分。

2.3 构造方法的注意事项

在这里插入图片描述

2.4 this关键字

  this,指当前对象的地址

在这里插入图片描述
在这里插入图片描述
在上图代码中,当调用Car()或goWith()方法并传入一个字符串参数时,this.name用于区分成员变量 name和方法参数 name,避免了 同名冲突

3 封装

  面向对象的三大特征:封装,继承,多态
  封装:告诉我们,如何正确设计对象的属性和方法

3.1 什么是封装?

官方回答,理解即可:封装是面向对象编程(OOP)的三大基本特性之一,另外两个是继承和多态。封装的思想主要体现在以下几个方面:

  1. 数据隐藏:封装的核心概念是将对象的状态(属性或数据成员)与操作这些状态的方法(成员函数或方法)结合在一起,并且对外部世界隐藏其内部实现细节。通过设置访问修饰符如private、protected或public,可以控制哪些成员变量能被外部直接访问,哪些不能。

  2. 信息抽象:封装有助于创建一个独立、可复用并且易于理解的组件,该组件提供了一组有限的接口(即公开的方法),用户只需要知道如何使用这些接口,而无需了解它们的具体实现机制。

  3. 提高安全性:通过限制对内部数据的访问,可以防止意外修改或错误地操作数据,从而提高了程序的安全性和稳定性。

  4. 简化设计和维护:由于内部实现的变化不影响到外部调用者,因此在后续的设计和维护阶段,开发者可以在不改变接口的前提下自由修改类的内部实现逻辑。

简单来说,封装就是将相关的数据和行为组合在一起,形成一个统一的、受保护的整体,外部代码只能通过预定义的接口来访问和操作这个整体,而不能直接干预其内部结构和实现细节。
在这里插入图片描述

3.2 如何进行更好的封装?

在这里插入图片描述
在这里插入图片描述

4 JavaBean(重要)

  JavaBean也称为实体类,其对象可以用于在程序中封装数据。
  标准的JavaBean必须满足以下要求:

   1. 成员变量使用 private 修饰。
   2. 提供成员变量对应的 setXxx() / getXxx()方法。
   3. 必须提供一个无参构造器;有参数构造器是可写可不写的。

4.1 一个JavaBean类示例

一个符合JavaBean规范的Student实体类标准示例:

public class Student{// 私有成员变量,遵循驼峰命名法(首字母小写,后续单词首字母大写)private String studentName;// 默认构造器(无参数)public Student() {// 可以为空,可以初始化默认值或进行其他操作}// 带参数的构造器,用于实例化时直接设置属性值public Student(String name, int age) {this.studentName = name;}// Getter方法public String getStudentName() {return studentName;}// Setter方法public void setStudentName(String studentName) {this.studentName = studentName;}
}

在上述Student类中:

  • 类是公共的(public),具有可访问性。
  • 包含私有成员变量(private)。
  • 提供了与每个私有成员变量对应的公共getter和setter方法。
  • 有一个默认的无参数构造器。

5 成员变量和局部变量的区别

在这里插入图片描述

6 面向对象实践案例

在这里插入图片描述
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

《深入理解Java虚拟机(第三版)》读书笔记:虚拟机类加载机制、虚拟机字节码执行引擎、编译与优化

下文是阅读《深入理解Java虚拟机(第3版)》这本书的读书笔记,如有侵权,请联系删除。 文章目录 第6章 类文件结构第7章 虚拟机类加载机制7.2 类加载的时机7.3 类加载的过程7.4 类加载器7.5 Java模块化系统 第8章 虚拟机字节码执…

手动创建idea SpringBoot 项目

步骤一: 步骤二: 选择Spring initializer -> Project SDK 选择自己的JDK版本 ->Next 步骤三: Maven POM ->Next 步骤四: 根据JDK版本选择Spring Boot版本 11版本及以上JDK建议选用3.2版本,JDK为11版本…

大数据 - 大数据入门第一篇 | 关于大数据你了解多少?

🐶1.1 概述 大数据(BigData):指无法在一定时间范围内用常规软件工具进行捕捉、管理和处理的数据集合,是需要新处理模式才能具有更强的决策力、洞察发现力和流程优化能力的海量、高增长率和多样化的信息资产。 大数据主要解决、海量数据的采…

torch.meshgrid和np.meshgrid的区别

numpy中meshgrid: 把数组a当作一行,再根据数组b的长度扩充行。 把数组b当作一列,再根据数组a的长度扩充列。 torch中meshgrid: 把数组a当作一列,再根据数组b的长度扩充列。 把数组b当作一行,再根据数组a的…

最优化理论期末复习笔记 Part 2

数学基础线性代数 从行的角度从列的角度行列式的几何解释向量范数和矩阵范数 向量范数矩阵范数的更强的性质的意义 几种向量范数诱导的矩阵范数 1 范数诱导的矩阵范数无穷范数诱导的矩阵范数2 范数诱导的矩阵范数 各种范数之间的等价性向量与矩阵序列的收敛性 函数的可微性与展…

Camtasia2024录屏软件简单实用的4K录制视频软件

Camtasia是一款功能强大的屏幕录制软件,适用于Windows和Mac操作系统。它具有简单的操作界面和丰富的编辑功能,coco玛奇朵可以让你轻松录制和编辑屏幕视频。Camtasia还支持添加文字、图像、动画等元素,同时提供了丰富的特效和滤镜功能&#xf…

RK3568 学习笔记 : ubuntu 20.04 下 Linux-SDK 镜像烧写

前言 开发板:【正点原子】ATK-DLRK3568 开发板,编译完 Linux-SDK 后,生成了相关的镜像文件,本篇记录一下 镜像烧写,当前编译环境在 VMware 虚拟机中,虚拟机系统是 ubuntu 20.04 此次烧写还算顺利&#xff…

redisson作为分布式锁的底层实现

1. redisson如何实现尝试获取锁的逻辑 如何实现在一段的时间内不断的尝试获取锁 其实就是搞了个while循环,不断的去尝试获取锁资源。但是因为latch的存在会在给定的时间内处于休眠状态。这个事件,监听的是解锁动作,如果解锁动作发生。会调用…

202402读书笔记|《当你老了》——灰蒙曙光比爱情温柔,清晨露珠比希望更可爱

202402读书笔记|《当你老了》——灰蒙曙光比爱情温柔,清晨露珠比希望更可爱 《当你老了》作者叶芝,断断续续碎片时间读完的一本书,不是很惊艳,但值得一读。就因为很喜欢当你老了,所以拾起的这本书。读完知道了原来叶芝…

VR与数字孪生:共同构筑未来的虚拟世界

随着科技的不断发展,数字孪生和VR已经成为当今热门的科技话题。作为山海鲸可视化软件的开发者,我们对这两者都有深入的了解。在此,我们将详细探讨数字孪生与VR的区别和联系。 首先,数字孪生(Digital Twin)…

QT上位机开发(网络程序界面开发)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 传统的上位机对接方式还是以232、485、can为主,随着网络的发展,越来越多的设备都是以网络进行通信的。毕竟相比较之前&…

C++ 之LeetCode刷题记录(七)

😄😊😆😃😄😊😆😃 开始cpp刷题之旅,多学多练,尽力而为。 先易后难,先刷简单的。 28. 找出字符串中第一个匹配项的下标 给你两个字符串 haystac…

windows安装RabbitMQ

1、下载 下载地址:https://www.rabbitmq.com/ 因为RabbitMQ是基于Erlang语言开发的,所以我们要先安装Erlang环境。 2、安装erlang 双击otp_win64_20.2.exe,点击next 选择安装路径 3、配置erlang环境变量 新建系统变量名为:ERLA…

ssrf之dict协议和file协议

1.dict协议 dict是什么协议呢? 定义:词典网络协议,在RFC 2009中进行描述。它的目标是超越Webster protocol,并允许客户端在使 用过程中访问更多字典。Dict服务器和客户机使用TCP端口2628。 官方介绍:http://dict.o…

基于帝国主义竞争算法优化的Elman神经网络数据预测 - 附代码

基于帝国主义竞争算法优化的Elman神经网络数据预测 - 附代码 文章目录 基于帝国主义竞争算法优化的Elman神经网络数据预测 - 附代码1.Elman 神经网络结构2.Elman 神经用络学习过程3.电力负荷预测概述3.1 模型建立 4.基于帝国主义竞争优化的Elman网络5.测试结果6.参考文献7.Matl…

【电路笔记】-电感器

电感器 文章目录 电感器1、概述2、电感器的时间常数3、电感器示例1 电感器是一种由线圈组成的无源电气元件,其设计目的是利用电流通过线圈而产生的磁力和电力之间的关系。 1、概述 在本中,我们将看到电感器是一种电子元件,用于将电感引入到电…

2023年高级软考系统架构师考题参考

对于一些有实践经验的同学来说,感觉不难,但是落笔到纸面上,就差强人意了,平时这方面要多练习,所想所思要落到纸面上,或者表达清晰让别人听懂,不仅是工作中的一个基本素质,也是个非常…

微服务整合:构建高效灵活的分布式系统

随着软件开发的不断演进和业务的复杂性增加,微服务架构已经成为一种流行的解决方案。然而,当涉及到多个微服务之间的整合时,我们需要谨慎考虑如何实现高效、灵活的分布式系统。 微服务架构的流行使得软件开发变得更加灵活和可扩展。然而&…

贝锐花生壳全新功能:浏览器一键远程访问SSHRDP远程桌面

为了满足特定场景的远程访问需求,如:远程群晖NAS设备、远程SQL Server数据库/MySQL数据库、3389远程桌面(RDP远程桌面)、远程SSH、我的世界游戏联机…… 贝锐花生壳推出了场景映射服务,不仅提供满足相应场景的网络带宽…

线性代数_对称矩阵

对称矩阵是线性代数中一种非常重要的矩阵结构,它具有许多独特的性质和应用。下面是对称矩阵的详细描述: ### 定义 对称矩阵,即对称方阵,是指一个n阶方阵A,其转置矩阵等于其本身,即A^T A。这意味着方阵A中的…