当前位置: 首页 > news >正文

Java基础的重点知识-04-封装

文章目录

  • 面向对象思想
  • 封装

面向对象思想

在计算机程序设计过程中,参照现实中事物,将事物的属性特征、行为特征抽象出来,描述成计算机事件的设计思想。

  • 面向对象思想的三大基本特征: 封装、继承、多态

1.类和对象
类是对象的抽象,对象是类的具体实例
比如我们把所有学生归为一个类叫做学生类,那么何为对象呢?对象就是学生类的一个具体示例,比如说是一个叫小明的学生,这就是这个类的一个对象。

  • 类是对一类事物的描述,是抽象的
  • 对象是一类事物的实例,是具体的
  • 类是对象的模板,对象是类的实体
  1. 类的定义

成员变量:对应事物的属性
成员方法:对应事物的行为

public class ClassName {//成员变量//成员方法
}
  1. 对象的使用
    创建对象:类名 对象名 = new 类名();
    使用对象访问类中的成员: 对象名.成员变量;对象名.成员方法();
    代码示例:
public class Student {String name;int age;public void play(){System.out.println("我爱打篮球!");}public static void main(String[] args) {Student xiaoMing = new Student();xiaoMing.name = "小明";xiaoMing.age = 18;System.out.println(xiaoMing.name + ":" + xiaoMing.age);xiaoMing.play();}
}

在这里插入图片描述
重点(成员变量的默认值):

数据类型默认值
基本类型整数(byte,short,int,long)0
浮点数 (float,double)0.0
字符(char)‘\u0000’
布尔(boolean)false
引用类型数组,类,接口null
  1. 对象内存图
  • 一个对象调用一个方法内存图
    在这里插入图片描述

  • 两个对象,调用同一方法内存图
    在这里插入图片描述

  • 一个引用,作为参数传递到方法中内存图

在这里插入图片描述

  1. 成员变量与局部变量的区别
public class Bird {String name;int age;public static void main(String[] args) {String action = "";}
}

这里我们在类中方法外定义的变量是成员变量,在方法内定义的变量是局部变量,

  • 在类中的位置不同
    成员变量:类中,方法外
    局部变量:方法中或者方法声明上(形式参数)
  • 作用范围不一样
    成员变量:类中
    局部变量:方法中
  • 初始化值的不同 重点
    成员变量:有默认值
    局部变量:没有默认值。必须先定义,赋值,最后使用
  • 在内存中的位置不同
    成员变量:堆内存
    局部变量:栈内存
  • 生命周期不同
    成员变量:随着对象的创建而存在,随着对象的消失而消失
    局部变量:随着方法的调用而存在,随着方法的调用完毕而消失

封装

将成员变量隐藏在对象内部,外界无法对其进行直接修改或操作,增强代码的安全性

  • 将属性隐藏起来,若需要访问某个属性,提供公共方法对其访问。
  1. 如何进行封装处理
    首先是使用private关键字来修饰成员变量,再通过提供一对getXXX()方法和setXXX()方法,来供对象访问成员变量。
    代码示例:
public class Student {private String name;private int age;public String getName() {return name;}public void setName(String n) {name = name;}public int getAge() {return age;}public void setAge(int a) {age = a;}public static void main(String[] args) {Student xiaoMing = new Student();xiaoMing.setName("小明");xiaoMing.setAge(18);System.out.println(xiaoMing.getName() + ":" + xiaoMing.getAge());}
}

在这里插入图片描述可以发现,我们通过公共的get、set方法来对成员变量进行设值和取值,但是这样的代码并不是最常见的。因此我们要了解this关键字。

  1. this关键字
    this代表所在类的当前对象的引用(地址值),即对象自己的引用。
    因为this表示所在类的当前对象的引用,所以我们可以通过this关键字来标识成员变量和传递的参数名,使我们的代码更加优雅。
    注意: 当我们不使用this关键字来进行区别时,无法正确的进行成员变量的赋值。
package demo01;public class Student {private String name;private int age;public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public static void main(String[] args) {Student xiaoMing = new Student();xiaoMing.setName("小明");xiaoMing.setAge(18);System.out.println(xiaoMing.getName() + ":" + xiaoMing.getAge());}
}
  1. 构造方法
    无论你与否自定义构造方法,所有的类都有构造方法,因为Java自动提供了一个无参数构造方法, 一旦自己定义了构造方法,Java自动提供的默认无参数构造方法就会失效。
    构造方法的定义
修饰符 构造方法名(参数列表){// 方法体
}
  • 构造方法名与类名相同
  • 构造方法没有返回值

代码示例:

package demo01;public class Student {private String name;private int age;public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public Student(String name, int age) {this.name = name;this.age = age;}public Student(String name) {this.name = name;}public Student(int age) {this.age = age;}public Student() {}public static void main(String[] args) {Student xiaoMing = new Student("小明",18);System.out.println(xiaoMing.getName() + ":" + xiaoMing.getAge());}
}

从上代码我们可以看到,构造方法是可以重载的,但是我们也要注意,当我们只设定有参的构造方法的时候,无参构造方法就会消失。但是我们java中有些框架在进行反射时是需要无参构造器的支持的,所以在我们创建类的时候最好是定义好有参构造方法以及无参构造方法

欢迎java热爱者了解文章,作者将会持续更新中,期待各位友友的关注和收藏。。。

相关文章:

Java基础的重点知识-04-封装

文章目录 面向对象思想封装 面向对象思想 在计算机程序设计过程中,参照现实中事物,将事物的属性特征、行为特征抽象出来,描述成计算机事件的设计思想。 面向对象思想的三大基本特征: 封装、继承、多态 1.类和对象 类是对象的抽象&#xff…...

win7 的 vmware tools 安装失败

没有安装vmware tools的系统屏幕显示异常。桌面是比较小的图像,四周是黑边在 vmware 软件里 方法1,下补丁 https://www.catalog.update.microsoft.com/Search.aspx?qkb4474419 方法2,使用老版vm tools http://softwareupdate.vmware.com/c…...

【杂记-浅谈OSPF协议之IR、ABR、ASBR、BR】

OSPF协议之IR、ABR、ASBR、BR 一、 内部路由器 IR二、骨干路由器 BR三、边界路由器 ABR四、自治系统边界路由器 ASBR 一、 内部路由器 IR 概念 IR,Internal Router,即内部路由器,指的是所有接口都属于同一个OSPF区域的路由器。这类路由器只维…...

element 问题整合

没关系,凡事发生必有利于我 文章目录 一、el-table 同级数据对齐及展开图标的位置问题二、el-table 勾选框为圆角及只能勾选一个 一、el-table 同级数据对齐及展开图标的位置问题 element 官方提供的扩展tree型数据在表格里默认是靠左边对齐,项目需求需要…...

Linux下vi文件的时候替换指定的内容

需要将nginx.conf中的192.168.222.188,替换为178.21.120.225 操作步骤: 1、vi 文件 vi nginx.conf2、输入 :%s/192.168.222.188/178.21.120.225/g3、最后保存 :wq...

【知识学习】阐述Unity3D中MaterialTexture的概念及使用方法示例

在Unity3D中,Material和Texture是渲染过程中非常重要的两个概念,它们共同工作以实现丰富的视觉效果。 Material Material是Unity中的一个组件,用于定义物体表面的视觉属性。一个Material可以包含多种属性,如颜色、纹理、反射率等…...

java创建0byte的空文件

在Java中,使用File类创建一个文件通常不会自动创建一个0字节的文件,它只是用来表示文件系统中的一个文件或目录。如果你想要创建一个0字节的文件,你需要使用FileOutputStream来写入文件。以下是创建一个0字节文件的示例代码: imp…...

Qt 实战(6)事件 | 6.2、事件过滤器

文章目录 一、事件过滤器1、什么是事件过滤器?2、如何实现事件过滤器?3、应用示例4、总结 前言: 在Qt的事件处理机制中,事件过滤器(Event Filter)是一种非常强大且灵活的工具,它允许开发者在一个…...

【PyTorch】【机器学习】图片张量、通道分解合成和裁剪

一、导入所需库 from PIL import Image import torch import numpy as np import matplotlib.pyplot as plt二、读取图片 pic np.array(Image.open(venice-boat.jpg))上述代码解释:先用Image.open()方法读取jpg格式图片,再用np.array()方法将图片转成…...

如何提高工业交换机的电源功耗?

工业交换机的电源功耗是指在工作状态下所消耗的能量。随着工业自动化技术的发展,工业交换机在生产和制造领域中扮演着至关重要的角色。它们通过连接各种设备和系统,实现信息的传输和处理,提高生产效率和质量。然而,工业交换机的大…...

源站静态文件更新后,CDN会自动刷新吗

源站静态文件更新后,CDN不会自动刷新缓存,而是在缓存时间过期后,才会经由用户触发回源获取最新文件。如希望在缓存过期时间之前,实现CDN节点与源站静态文件同步更新,则需要通过CDN控制台-【刷新预取】菜单,…...

Token的应用场景

JWT JWT由三部分组成:头部(Header)、有效载荷(Payload)和签名(Signature)头部通常指定了Token的类型和使用的哈希算法;有效载荷包含了一系列的声明,例如用户的ID、Token…...

机器学习课程复习——奇异值分解

1. 三种奇异值分解 奇异值分解(Singular Value Decomposition, SVD)包含了: 完全奇异值分解(Complete Singular Value Decomposition, CSVD)紧奇异值分解(Tight Singular Value Decomposition, TSVD&…...

Java--乐观锁

乐观锁是一种并发控制机制,用于处理多个事务或线程对同一数据进行并发修改的问题。它假设多个事务或线程在操作数据时不会互相干扰,因此不在数据上加锁,而是在提交数据时检查数据是否被其他事务修改过。如果数据在提交前已经被其他事务修改&a…...

静默升级oracle 11g (从11.2.0.1升级到11.2.0.4)

原文:https://www.cnblogs.com/daizhengyang/p/13353783.html 一个环境是oracle 11.2.0.1,一个环境是oracle 11.2.0.4,同样的数据,同样的sql,在两个版本数据库表现不一样。于是,干脆都统一为11.2.0.4。 但…...

什么是模型训练,如何选择合适的Batch大小

模型训练是指使用数据集对模型进行训练,使其能够从数据中学习到特征和模式,进而完成特定的任务。在深度学习领域,通常使用反向传播算法来训练模型,其中模型会根据数据集中的输入和输出,不断更新其参数,以最…...

【线上绘图网站分享】

好用的线上绘图网站分享 使用场景特点使用例子 Excalidraw 使用场景 流程图绘制、组会分享工具等; 特点 最重要的就是:免费!! 简单,快捷:有时候临时要画一个流程图之类的用来示意、分享知识点&#xff…...

Snipaste截图工具如何控制框线箭头的粗细程度

我们使用Snipaste截图工具的时候,最常用的就是框线和箭头这些功能,有时候感觉很粗有时候感觉太细了,如何解决呢?我们可以在使用框线或者箭头之后,长按1或者2来控制框线箭头的粗细程度。其中1是变细,2是变粗…...

GISSERVER 管理器 1.0(私有化地图离线部署)

一、 简介 QGIS现在在全世界已经成为ARCGIS的最佳代替产品,而且是开源免费的。其用户社区和产品功能都已经可以与arcgis相媲美! GISSERVER管理工具是一个零代码地图网站建站工具(私有化地图离线部署),可以直接将QGIS工程转换为GIS网站(功能类似ARCGISM…...

Eureka服务治理深度解析:服务下线与剔除机制揭秘

Eureka服务治理深度解析:服务下线与剔除机制揭秘 在微服务架构中,服务的动态注册与发现是保证系统高可用性的关键。Netflix开源的Eureka作为服务发现框架,其服务下线与剔除机制是确保服务列表准确性的重要手段。本文将深入探讨Eureka中的服务…...

实战指南:为spring boot项目快速配置最优jdk环境,助力应用高效部署

最近在准备一个Spring Boot项目时,发现JDK环境配置这个看似简单的环节其实藏着不少学问。特别是当项目需要兼顾开发效率和生产环境稳定性时,合理的JDK配置方案就显得尤为重要。今天就来分享下我的实战经验,以及如何利用工具快速搞定这些配置。…...

AI原生应用领域链式思考:构建高效应用架构

AI原生应用领域链式思考:构建高效应用架构 关键词:AI原生应用、链式思考、应用架构、大模型协同、上下文管理 摘要:本文从AI原生应用的核心特征出发,结合"链式思考"这一关键设计模式,系统讲解如何构建高效能…...

Java后端如何优雅地封装第三方API调用逻辑以对接美团外卖霸王餐接口

Java后端如何优雅地封装第三方API调用逻辑以对接美团外卖霸王餐接口 在Java后端开发中,对接第三方API(如美团外卖霸王餐接口)是常见的需求。直接在业务代码中拼接URL、处理JSON、写HTTP请求不仅导致代码臃肿,还难以维护和测试。 本…...

Agent的决策模糊

文章目录Langchian Agent内部记忆:信息过载LLM注意力有限的解释:上下文窗口长度很大,会有这种问题么对比langGraphLangchian Agent内部记忆: 官方 ReAct 内部机制(铁律) LangChain 的 AgentExecutor 在一次 invoke () 内部&#…...

【回归儿童本位,重构专业底色】学前教育行业的深度思辨与价值坚守(二)

吕坤阳亲笔二、行业高质量发展的核心:回归儿童,摒弃功利化教育随着学前教育普惠政策的推进,行业规范化程度不断提升,但功利化、形式化的教育倾向依然存在,成为高质量发展的阻碍。部分幼儿园为迎合家长“抢跑”需求&…...

Qwen3.5-35B-A3B-AWQ-4bit企业应用:HR招聘简历图识别+关键资质自动核验系统

Qwen3.5-35B-A3B-AWQ-4bit企业应用:HR招聘简历图识别关键资质自动核验系统 1. 企业招聘场景的痛点分析 在传统HR招聘流程中,简历筛选和资质核验是最耗费人力的环节之一。每天面对堆积如山的纸质简历和PDF文件,HR需要: 手动翻阅…...

原创:光刻机中下游质量约束框架:从底层落地破局芯片制造困局

光刻机中下游质量约束框架:从底层落地破局芯片制造困局 作者:华夏之光永存 摘要 当下国内芯片产业陷入一个普遍误区:将攻克EUV光刻机整机视为破局“卡脖子”的唯一核心,大量资源集中投入上游光刻机研发,却严重忽视中下…...

PP-DocLayoutV3实操手册:display_formula公式块检测准确率提升的3个微调技巧

PP-DocLayoutV3实操手册:display_formula公式块检测准确率提升的3个微调技巧 1. 引言:为什么公式检测这么重要? 在文档数字化处理过程中,数学公式的准确检测一直是个技术难点。传统的OCR系统往往把公式误判为普通文本或图像&…...

3种Cookie管理方案对比:为什么本地导出才是开发者最佳选择?

3种Cookie管理方案对比:为什么本地导出才是开发者最佳选择? 【免费下载链接】Get-cookies.txt-LOCALLY Get cookies.txt, NEVER send information outside. 项目地址: https://gitcode.com/gh_mirrors/ge/Get-cookies.txt-LOCALLY 在Web开发和自动…...

Qwen3.5-9B-AWQ-4bit部署教程:Docker容器内路径映射与模型加载权限配置

Qwen3.5-9B-AWQ-4bit部署教程:Docker容器内路径映射与模型加载权限配置 1. 引言 今天我们要探讨的是如何在Docker环境中部署Qwen3.5-9B-AWQ-4bit模型,这是一个支持图像理解的多模态模型。这个模型能够结合上传的图片与文字提示词,输出中文分…...