【自学笔记】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 面向对象实践案例

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

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

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

相关文章

SpringBoot Redis入门(一)——redis、Lettuce、Redisson使用

本章:将展示SpringBoot集成Redis三种客户端的配置要点和常见应用示例;下章:自行实现一个方法级的缓存注解,简化版的Cacheable,使初学者加深对Spring缓存框架的理解。 一、Lettuce客户端 Lettuce 是一种可扩展的、线程…

lf 的年终总结(2023)

这一年, 我没有进行总结, 只有年终的回顾。 是的, 我又长了一岁, 同时也度过了三年的开发经历, 即将进入五年 Android 开发的阶段。 我只希望在新的一年里能够好好学习,期待有所提升。 回顾过去的生活&…

FAST-LIO2:论文和算法解析

文章目录 摘要一、简介二、相关工作2.1雷达惯导里程计2.2 建图过程中的动态数据结构 三、系统架构四、状态估计A. 卡尔曼模型1.状态转换模型2.测量模型 B.迭代卡尔曼滤波1. 预测过程2. 残差计算3.迭代更新 五、建图A.地图管理B.树的结构与创建1.数据结构2.ikd树的创建 C.地图的…

给Flutter + FireBase 增加 badge 徽章,App启动器 通知红点。

在此之前需要配置好 firebase 在flutter 在项目中。(已经配置好的可以忽略此提示) Firebase 配置教程:flutter firebase 云消息通知教程 (android-安卓、ios-苹果)_flutter firebase_messaging ios环境配置-CSDN博客 由于firebase 提供的消息…

ThreadLocal 是什么?它的实现原理呢?

一个工作了 4 年的小伙伴,又私信了我一个并发编程里面的问题。 他说他要抓狂了,每天 CRUD,也没用到过 ThreadLocal 啊,怎么就不能问我怎么写CRUD 呢? 我反问他如果只问你项目和业务,那有些 4 年的小伙伴他…

光线追踪原理

理论 参考 实现光线追踪算法 光线追踪算法采用由像素组成的图像。对于图片中的每个像素,它会将主光线射入场景(从眼睛(或相机)射入场景的第一条光线称为主光线、能见度光线或相机光线。)。该主光线的方向是通过追踪…

2.0.0 BGP高级特性-ASFilter、CommunityFilter、ORF、对等组

Peer Group BGP对等体组 在网络中出现多台设备配置相近的情况下,使用对等体组可以极大的减少配置命令的输入。 与端口组类似,通过创建一个组,然后将成员添加入其中,可以对组中的成员进行统一的管理。 案例配置1 以AR2为例&…

Python split()方法详解:分割字符串

Python 中,除了可以使用一些内建函数获取字符串的相关信息外(例如 len() 函数获取字符串长度),字符串类型本身也拥有一些方法供我们使用。 注意,这里所说的方法,指的是字符串类型 str 本身所提供的&#x…

ubuntu22.04配置双网卡绑定提升带宽

这里写自定义目录标题 Bonding简介配置验证参考链接 Bonding简介 bonding(绑定)是一种linux系统下的网卡绑定技术,可以把服务器上n个物理网卡在系统内部抽象(绑定)成一个逻辑上的网卡,能够提升网络吞吐量、实现网络冗余、负载均衡等功能,有很…

专业课130+,总分390+四川大学951信号与系统考研通信,电子信息经验分享

今年专业课130,总分390,顺利上岸,将近一年复习一路走来,感慨很多,希望以下经历可以给后来的同学提供一些参考。 初试备考经验 公共课:三门公共课,政治,英语,数学。在备…

基于SSM+Jsp的叮当书城、网上书城购物系统(有文档Java毕业设计)

大家好,我是DeBug,很高兴你能来阅读!作为一名热爱编程的程序员,我希望通过这些教学笔记与大家分享我的编程经验和知识。在这里,我将会结合实际项目经验,分享编程技巧、最佳实践以及解决问题的方法。无论你是…

怎么用活码二维码生成器?多种活码在线制作

扫码看内容的方式被很多行业应用,最常见的内容就是展现文字、图片、视频等类型,那么这种将不同内容组合展示的方法是什么样的呢?想要制作二维码最简单的方法可以使用二维码生成器工具来处理,下面就将具体的二维码制作的步骤分享给…

如何使用可视化管理工具DockerUI远程管理docker容器

文章目录 前言1. 安装部署DockerUI2. 安装cpolar内网穿透3. 配置DockerUI公网访问地址4. 公网远程访问DockerUI5. 固定DockerUI公网地址 前言 DockerUI是一个docker容器镜像的可视化图形化管理工具。DockerUI可以用来轻松构建、管理和维护docker环境。它是完全开源且免费的。基…

数据资产入表正式施行,企业如何对数据资产进行会计核算?

2024年1月1日,《企业数据资源相关会计处理暂行规定》正式施行,数据资源将作为资产在企业的会计和财务报告中确认、计量、报告和披露。这代表着企业数据相关的支出由损益变成资产类,可以计入资产,不仅可以减少投入期对利润的影响&a…

浅谈园区建设“一站式企业服务平台”的必要性!

​ 随着数字经济的快速发展与新一代信息技术的日新月异,打造智慧型、高效能的园区运营模式已成为现代产业园区转型升级的关键路径,其中,构建“一站式企业服务平台”成为了园区创新企业服务机制、提升企业服务效能、优化营商环境的重要举措。 …

IP地址定位技术的应用及其重要性

随着网络技术的快速发展,网络安全问题日益凸显,IP地址定位技术在网络安全领域的应用也越来越广泛。本文将介绍IP地址定位技术在网络安全领域的应用及其重要性。 一、IP地址定位技术概述 IP地址定位技术是指通过一定的技术手段,将虚拟网络中的…

液冷数据中心生态建设启动:浪潮信息力推绿色算力产业发展

近日,由中国电子技术标准化研究院主办的“节能环保低碳 我们在行动”第二届电子信息行业绿色环保大会在江苏无锡盛大举行。会上,中国电子技术标准化研究院、浪潮信息等五家发起单位共同启动“液冷数据中心生态建设”,浪潮信息服务器产品线总经…

电子招标采购系统源码之从供应商管理到采购招投标、采购合同、采购执行的全过程数字化管理

随着市场竞争的加剧和企业规模的扩大,招采管理逐渐成为企业核心竞争力的重要组成部分。为了提高招采工作的效率和质量,我们提出了一种基于电子化平台的解决方案。该方案旨在通过电子化招投标,使得招标采购的质量更高、速度更快,同…

cissp 第10章 : 物理安全要求

10.1 站点与设施设计的安全原则 物理控制是安全防护的第一条防线,而人员是最后一道防线。 10.1.1 安全设施计划 安全设施计划通过关键路径分析完成。 关键路径分析用于找出关键应用、流程、运营以及所有必要支撑元索间的关系。 技术融合指的是各种技术、解决方案…

gRPC接口怎样从proto文件到具体使用

proto文件转为头文件和源码 proto文件是一种预编译的规定文件,用来告诉gRPC 的服务如何生成对应的代码。 具体的使用方式请参考:介绍文档:proto 文件的关键字介绍 具体的说,一个proto文件分为三部分:指定环境&#…