【Java面向对象编程(中)】- 探索封装的秘密

🌈个人主页: Aileen_0v0
🔥系列专栏:Java学习系列专栏
💫个人格言:"没有罗马,那就自己创造罗马~" 



目录

回顾

封装​编辑

为什么进行封装 ​​编辑​

如何调用私有的变量 ​​编辑​

1.get + set方法(当形参和成员变量不同名时)​编辑

2. get + set + this(形参名不小心与成员变量名相同时)​编辑

  📝总结


回顾

上次我们学习了Java 面向对象编程的 类,方法及属性

以及Java中静态成员方法和变量,实例成员方法和变量的使用

若有遗忘点击👉🔗http://t.csdnimg.cn/xp3Ls


今天我们学习Java面向对象编程的特性 - 封装和this的使用

封装

封装是面向对象编程中的一种重要概念,是将数据和操作数据的方法包装在一起的机制

Java中的封装可以通过访问控制修饰符(public、private、protected、default)来实现

通过将数据私有化(使用private关键字)只能通过公共的方法(getters和setters)来访问和修改数据,从而保证了数据的安全性和可控性。

封装也是实现信息隐藏的重要方式,避免了对外暴露实现细节。同时,通过封装还可以提高代码的重用性和可维护性,因为修改数据的实现细节只需要在类的内部进行,不会影响到类的外部使用

 如果一个类的属性或方法被private修饰以后,只能在类里面被使用

 


为什么进行封装 

如果name是共有的不进行封装,实现者若改了属性name的名字,调用者完全不知道实现者改了属性,所以我们才要进行封装.


如何调用私有的变量 

如果调用者想要调用实现者的私有变量,可以通过get和set方法,或者get + set + this进行私有变量的调用 

this写在哪个类里面,就表示哪个类对象的引用

方法变成private,那么这个方法也只能在当前类里面使用

1.get + set方法(当形参和成员变量不同名时)

/**
 * 
 */
package Test;

/**
 * 
 * 封装: 用 private 来修饰属性 或者 方法
 * 限定你只能在类当中被使用
 * 
 * 
 */
class Student{
	public int age;//实例变量
	//封装 name  限定你只能在类当中进行访问
	private String MyName;//实例变量
	
	
	//首先通过set方法设置传入的名字
	public void setMyName(String name) {
		MyName = name;
	}
	
	//然后提供一个公开的接口
	public String getMyName() {
		return MyName;
	}
	


	public void funcl() {
		System.out.println("func1()");
	}
	public void show() {
		System.out.println("我叫" + MyName + ",今年" + age + "岁"); 
	}
}

// 

public class TestDemo1 {
	public static void main(String[] args) {
		Student student = new Student();//person为对象的引用
		student.setMyName("🐖");//方法--->传参
		String str = student.getMyName();

		System.out.println(str);

	}

 }

2. get + set + this(形参名不小心与成员变量名相同时)

this 引用指向当前对象 ( 成员方法运行时调用该成员方法的对象 ) ,在成员方法中所有成员变量的操作,都是通过该 引用去访问 。只不过所有的操作对用户是透明的,即用户不需要来传递,编译器自动完成。

/**
 * 
 */
package Test;

/** 
 * 封装: 用 private 来修饰属性 或者 方法
 * 限定你只能在类当中被使用
 *
 * this: 当前对象的 引用
 * 要习惯使用this
 */
class Student{
	public int age;//实例变量
	//封装 name  限定你只能在类当中进行访问
	private String MyName;//实例变量
	
	
	//首先通过set方法设置传入的名字
	public void setMyName(String MyName) {
		this.MyName = MyName;//其实就是 自己给自己赋值 并没有赋值属性 局部变量优先
		//this.MyName 指的是 Student 这个的对象的 private成员变量MyName~
	}
	//然后提供一个公开的接口
	public String getMyName() {
		return this.MyName;
	}

	private void funcl() {
		System.out.println("func1()");
	}
	public void show() {
		System.out.println("TA叫" + this.MyName + ",今年" + this.age + "岁"); 
	}
}
public class TestDemo1 {
	public static void main(String[] args) {
		Student student = new Student();//person为对象的引用
		student.setMyName("🐖");//方法--->传参
		String str = student.getMyName();
		System.out.println(str);
		student.show();

	}

 }

  📝总结

本文主要是介绍Java面向对象编程中封装是什么以及它的作用,还有关键字this的作用

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

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

相关文章

游戏平台采集数据

首先,你需要在你的项目中添加Kotlin的网络库,例如OkHttp。你可以在你的build.gradle文件中添加以下依赖: dependencies {implementation com.squareup.okhttp3:okhttp:4.9.0 }然后,你可以使用以下代码来创建一个基本的网络爬虫&a…

基于python+django的美食餐厅点餐订餐网站

运行环境 开发语言:Python python框架:django 软件版本:python3.7 数据库:mysql 5.7 数据库工具:Navicat11 开发软件:PyCharm/vscode 前端框架:vue.js 项目介绍 本论文主要论述了如何使用python语言开发…

原码补码相关运算

求补码步骤 原补转换 -127为负数,其补码为原码01111111,取反10000000,加一,10000001。 例如: 【-1】原码 10000001 反码bai11111110 补码duzhi 11111111 【3】原码 00000011 反码 00000011 补码 00000011 【-127】…

在Ubuntu下安装Redis

文章目录 前言一、配置JAVA运行环境二、Ubuntu下安装Redis1.安装c语言编译环境2.下载解压Redis3.make编译4.启动Redis4.运行Redis 三、性能测试总结 前言 版本 jdk版本:jdk-17_linux-x64_bin 地址:https://www.oracle.com/cn/java/technologies/downloa…

Ubuntu 创建并发布 Django 项目

Ubuntu 创建并发布 Django 项目 升级操作系统和软件 sudo apt updatesudo apt -y dist-upgrade 安装 python3-pip sudo apt -y install python3-pip安装 django pip install -i https://pypi.tuna.tsinghua.edu.cn/simple djangosudo apt -y install python3-django创建 dj…

Django基础介绍及HTTP请求

文章目录 Django框架的介绍Django的安装 Django框架开发创建项目的指令Django项目的目录结构URL 介绍视图函数(view)Django 中的路由配置带有分组的路由和视图函数带有命名分组的路由和视图函数 HTTP协议的请求和响应HTTP 请求HTTP 响应GET方式传参POST传递参数form 表单的name…

数字媒体技术基础之:分辨率

分辨率 Resolution,中国大陆译为“分辨率”,中国香港地区、中国台湾地区分别译为“解像度”和“解析度”,泛指测量设备对细节的分辨能力。 ◆ ◆ ◆ 图像尺寸 在数字图像处理中,像素 Pixel是一个无具体物理尺寸的抽象单位。 一张…

第18章 类集框架

通过本章需要掌握Java设置类集的主要目的与实现原理,掌握Collection接口的作用及小狐妖操作方法,掌握Collection子接口List、Set的区别及常用子类的使用与核心实现原理,掌握Map接口的作用及与Collection接口的区别,理解Map接口设计…

主题模型LDA教程:主题数选取 困惑度perplexing

文章目录 LDA主题数困惑度1.概率分布的困惑度2.概率模型的困惑度3.每个分词的困惑度 LDA主题数 LDA作为一种无监督学习方法,类似于k-means聚类算法,需要给定超参数主题数K,但如何评价主题数的优劣并无定论,一般采取人为干预、主题…

postgresql实现job的六种方法

简介 在postgresql数据库中并没有想oracle那样的job功能,要想实现job调度,就需要借助于第三方。本人更为推荐kettle,pgagent这样的图形化界面,对于开发更为友好 优势劣势Linux 定时任务(crontab) 简单易用…

链表题(2)

链表题 今天给大家带来道链表题的练习 移除链表元素 这道题上篇文章已经解决过一次,这次我们换一个思路来解决这个问题。 先把链接给大家奉上: https://leetcode.cn/problems/remove-linked-list-elements/description/ 题目描述: 给你一个…

AI:70-基于机器学习的水质检预测

🚀 本文选自专栏:AI领域专栏 从基础到实践,深入了解算法、案例和最新趋势。无论你是初学者还是经验丰富的数据科学家,通过案例和项目实践,掌握核心概念和实用技能。每篇案例都包含代码实例,详细讲解供大家学习。 📌📌📌在这个漫长的过程,中途遇到了不少问题,但是…

【强化学习】18 —— SAC( Soft Actor-Critic)

文章目录 前言最大熵强化学习不同动作空间下的最大熵强化学习基于能量的模型软价值函数最大熵策略 Soft Q-learningSoft Q-IterationSoft Q-Learning近似采样与SVGD伪代码 Soft Actor-Critic伪代码代码实践连续动作空间离散动作空间 参考与推荐 前言 之前的章节提到过在线策略…

leetcode(力扣) 51. N 皇后 (回溯,纸老虎题)

文章目录 题目描述思路分析对于问题1对于问题2 完整代码 题目描述 按照国际象棋的规则,皇后可以攻击与之处在同一行或同一列或同一斜线上的棋子。 n 皇后问题 研究的是如何将 n 个皇后放置在 nn 的棋盘上,并且使皇后彼此之间不能相互攻击。 给你一个整数…

字符加密A--E,B-F,W--A

文章目录 前言一、题目描述 二、题目分析 三、解题 程序运行代码 前言 本系列为选择结构编程题&#xff0c;点滴成长&#xff0c;一起逆袭。 一、题目描述 二、题目分析 三、解题 程序运行代码 #include<stdio.h> int main(){char c;cgetchar();if(c>a&&…

不想用了PVE了怎么办?那就迁移到VMware呗!

正文共&#xff1a;1111 字 20 图&#xff0c;预估阅读时间&#xff1a;1 分钟 有不少小伙伴用完PVE之后&#xff08;PVE8.0-2安装使用快速指导&#xff09;&#xff0c;跟我的感觉是一样的&#xff0c;就是有点拉胯&#xff0c;转而想换一个虚拟化软件&#xff0c;比如说VMwar…

【Java】注解(Annotation)

1.注解 就是lava代码里的特殊标记&#xff0c;比如:Override、Test等&#xff0c;作用是:让其他程序根据注解信息来决定怎么执行该程序。注意:注解可以用在类上、构造器上、方法上、成员变量上、参数上、等位置处。 如下Override所示&#xff1a; 2.自定义注解 就是自己定义…

火爆进行中的抖音双11好物节,巨量引擎助5大行业商家开启爆单之路!

抖音双11好物节目前正在火热进行中&#xff0c;进入爆发期&#xff0c;各大商家“好招”频出&#xff0c;都想要实现高速增长。依托“人群、货品、流量”三大优势&#xff0c;巨量引擎一直都是商家生意增长的给力伙伴&#xff0c;在今年的抖音双11好物节&#xff0c;巨量引擎就…

第 371 场 LeetCode 周赛题解

A 找出强数对的最大异或值 I 模拟 class Solution { public:int maximumStrongPairXor(vector<int> &nums) {int n nums.size();int res 0;for (auto x: nums)for (auto y: nums)if (abs(x - y) < min(x, y))res max(res, x ^ y);return res;} };B 高访问员工 …

通信世界扫盲基础二(原理部分)

上次我们刚学习了关于通信4/G的组成和一些通识&#xff0c;今天我们来更深层次了解一些原理以及一些新的基础~ 目录 专业名词 LTE(4G系统) EPC s1 E-UTRAN UE UU X2 eNodeB NR(5G系统) NGC/5GC NG NG-RAN Xn gNodeB N26接口 手机的两种状态 空闲态 连接态 …