【Java面向对象】java的学习之旅11-封装

Java 面向对象——封装 面向对象——封装1、类和对象1.1、什么是对象1.2、什么是类1.3、什么是对象的属性1.4、什么是对象的行为1.5、类和对象的关系1.6、类的定义1.7、对象的使用成员变量和局部变量2、封装2.1、private 关键字2.1、this 关键字2.3、封装2.31、封装概述2.32、封装原则2.33、封装的好处 1、类和对象 1.1、什么是对象 万物皆对象,客观存在的实物皆为对象 1.2、什么是类 类是对现实生活中的一类具有共同属性和行为的实物的抽象 类的特点: 1、类是对象的数据类型。 2、类是具有相同 阅读详情

定义:

将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问

实现:

  1. 私有化属性,使用private关键字修饰类的属性。
  2. 对外提供公开操作属性的方法,提供public修饰的getters/setters方法

好处:

  1. 提高代码的安全性
  2. 提高代码的复用性
  3. “高内聚”:封装细节,便于修改内部代码,提高可维护性
  4. “低耦合”:简化外部调用,便于调用者使用,便于扩展和写作。

例:

/**
 * 	需求:
 * 		1.Dog类,age属性不可能为负值。
 * 		2.nickname不能是吴青山
 * 
 */
 public class Dog {
	
	//1.private修饰的变量,只能在本类中使用
	//在外部无法随意修改变量值
	private String nickname;
	private String type;
	private char sex;
	private byte age;
	
	public Dog() {
		
	}

	public Dog(String nickname, String type, char sex, byte age) {
		//2.在有参构造内部做参数的合法校验
		this.nickname = nickname.equals("吴青山") ? "吴绿山" : nickname;
		this.type = type;
		this.sex = sex;
		this.age = age < 0 ? 0 : age;
	}
	
	public void setAge(byte age) {
		this.age = age < 0 ? 0 : age;
	}
	
	public byte getAge() {
		return age;
	}
	
	public void setNickname(String nickname) {
		this.nickname = nickname.equals("吴青山") ? "吴绿山" : nickname;
	}
	
	public String getNickname() {
		return nickname;
	}


	public void eat() {
		System.out.println("吃狗粮");
	}
	
	public void wang() {
		System.out.println("狗叫");
	}
	
}

拓展知识lombok插件

  1. 在eclipse所在的文件夹内找eclipse.ini文件打开并添加-javaagent:lombok.jar
  2. 将lombok的jar拷贝进eclipse所在的文件夹中
  3. 将lombok带版本号的jar包拷贝进项目的lib文件夹中(如果没有自己新建一个文件夹,jar包可以百度搜索maven respository进行下载)
  4. 右键-> build path 即可使用

idea中导入jar包:

File -> Project Structure -> Modules -> 选中Dependencies -> 点击右边的+号 -> 选中JARs or directories -> 找到要导入的jar包地址 -> 勾选之后 -> apply

例:

/**
 * 	教师类
 * @author junki
 * @date 2019年11月23日
 */
@Data // getters和setters方法、toString()方法等等
@NoArgsConstructor // 无参构造
@AllArgsConstructor // 有参构造
@Builder // 启用建造者模式
public class Teacher {
	
	private String name;
	private int age;
	private char sex;
	
}
public class Demo05 {

	//junit单元测试类,输入该代码,自动添加jar包即可
	@Test
	public void test1() {
		Teacher teacher = new Teacher("吴老师", 30, '男');
		teacher.getName();
		teacher.setAge(40);
		System.out.println(teacher.toString());
	}
	
	//建造者模式
	@Test
	public void test2() {
		Teacher teacher = Teacher.builder()
								.name("郭老师")
								.sex('女')
								.build();
		
		System.out.println(teacher.toString());
	}
	
}

封装的习题:

/**
 * 	创建一个程序员类
 * 		属性:姓名、性别、年龄
 * 		方法:吃饭、睡觉、敲代码
 * 		要求:
 * 			1.提供无参和有参构造方法
 * 			2.使用封装
 * 			3.姓名不能超过四个字
 * 			4.性别只能是男或者女
 * 			5.年龄只能在0到100之间
 * 
 */
public class Programmer {
	
	private String name;
	private char sex;
	private int age;
	
	public Programmer() {
	}

	public Programmer(String name, char sex, int age) {
		//判断字符串长度大于4
		if (name.length() > 4) {
			//王子玉吴青山
			//包前不包后
			name = name.substring(0, 4);
		}
		this.name = name;
		this.sex = (sex == '男' || sex == '女') ? sex : '男';
		this.age = (age >= 0 && age <= 100) ? age : 0;
	}
	
	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name.length() > 4 ? name.substring(0, 4) : name;
	}

	public char getSex() {
		return sex;
	}

	public void setSex(char sex) {
		this.sex = (sex == '男' || sex == '女') ? sex : '男';
	}

	public int getAge() {
		return age;
	}

	public void setAge(int age) {
		this.age = (age >= 0 && age <= 100) ? age : 0;
	}

	public void eat() {
		System.out.println("吃饭");
	}
	
	public void sleep() {
		System.out.println("睡觉");
	}
	
	public void coding() {
		System.out.println("敲代码");
	}

	@Override
	public String toString() {
		return "Programmer [name=" + name + ", sex=" + sex + ", age=" + age + "]";
	}
	
}
Java讲课笔记10:类的封装 1. 掌握类的封装 2. 学会使用方法的重载 3. 学会方法的递归 阅读详情

相关推荐

【Java基础知识 7】Java面向对象简介

面向对象是一种新兴的程序设计方法,或者是一种新的程序设计规范,其基本思想是使用对象、类、继承、封装、多态等基本概念来进行程序设计。

学Java,找哪吒 1万+

JAVA面向对象:封装性案例的实现

封装特性: 封装:是指隐藏对象的属性和实现细节,仅对外提供公共访问方式。 优点:隐藏实现细节,提供公共的访问方式; 提高了代码的复用性; 提高了安全性。 封装原则:将不需要对外提供的内容都隐藏起来; 把属性隐藏,提供公共方法对其访问。 封装步骤:1.成员变量私有化; ...

AI_drag0n的博客 819

【Excel VBA 编程】表格内自动生成进度条

在表格中生成进度条,进度条需要自适应单元格的宽度,根据不同进度区间变换颜色,并且按照进度数据大小显示其长短

wei1019的专栏 1518

JAVA -封装一个类。(姓名、年龄、性别)

实例:   //定义一个类。   public class Maopao1{     //创建私有的对象。     private String name;     private int age;     private String sex;   //获取一个公共的对象值。(姓名)   public String getName(String name){     //返回对象值。   ...

L的博客 7508

UE4引擎分析获取UWord,GName,GetName,GObjectArray

UE4引擎具有很多固定特征和特性 所以我们在逆向UE4引擎开发的游戏的时候,可以利用这些特征和特性. 当然,正常思路逆向也是没问题的(例如我们的ttw课程全数据逆向),你就当多了一个针对于该引擎逆向的快捷方式 或则多了一个思路即可. 正常逆向+引擎分析,使逆向结果全面且快速.

任鸟飞2217777779的博客 1万+

【原创理论】Stochastic Coupled Dyadic System (SCDS):一个用于两性关系动力学建模的随机耦合系统框架

基于二人爱情耦合系统动力学、稳定性与最优策略的综合性理论的数值模拟与分析

weixin_44695861的博客 1133

java第九课——封装

一:封装的定义 面向对象程序三大特性:封装、继承、多态。而类和对象阶段,主要研究的就是封装特性。何为封装呢?简单来说就是套壳屏蔽细节。 封装:将数据和操作数据的方法进行有机结合,隐藏对象的属性和实现细节,仅对外公开接口来和对象进行交互。 二:访问限定符 Java中主要通过类和访问权限来实现封装:类可以将数据以及封装数据的方法结合在一起,更符合人类对事物的认知,而访问权限用来控制方法或者字段能否直接在类外使用。Java中提供了四种访问限定符: 访问限定符 pub...

baijaiyu的博客 924

电子取证之服务器取证思路

服务器取证是一个技术性很强的领域,涉及到多个环节,包括网站重构、网站代码分析、容器分析等。数据库密码的获取通常通过查看配置文件、日志文件、备份等途径,同时可以通过一些绕过技术如禁用身份验证来获取权限。对于不同的数据库,需要根据其特性采取相应的应对方法和命令。

2401_84830066的博客 2487

11 面向对象 类 对象 封装

面向对象概念 在学习面向对象之前,我们可以先了解一下面向过程。面向过程是一种思想,意思是我们要做任何事,都需要亲力亲为,强调的是过程。 面向对象也是一种编程思想,相对于面向过程,我们可以由原来问题的执行者变为指挥者,进而把生活中很多复杂的问题变得简单化。 面向过程强调的是过程,比如,把大象装冰箱,一共分3步: 第1步:打开冰箱门 第2步:把大象放进去 第3步:关上冰箱门 而面向对象强调的是结果,比如: 什么样的冰箱?什么样的大象?谁负责把大象装进去? 有没有发现,如果是面向对象的话,干这件事的主体并不是

qq_67316362的博客 370

Orange Pi 3B+刷入EmuELEC全过程:手把手教程

手把手教你如何在Orange Pi 3B+上成功刷入emuelec系统,涵盖烧录工具、镜像下载到启动设置的完整流程,让复古游戏体验轻松实现。

weixin_35732273的博客 1090

微信小程序:使用mqtt手机屏幕锁屏后导致中断问题,让mqtt在手机黑屏后依然能保持连接及持续后台运行接收或处理任务,详解微信小程序MQTT在应用退到后台或手机熄屏的情况下自动检测并重连【强制保活】

微信小程序切后台后MQTT连接无法维持,微信小程序MQTT一旦用户锁屏、切换到后台或手机熄屏,连接就会断开,导致无法继续监听和处理业务消息,微信小程序mqtt保活方案,微信小程序屏幕锁屏或息屏导致mqtt连接中断怎么办,如何解决MQTT不能黑屏持续连接的问题,微信小程序应用退到后台 MQTT连接断开问题解决,苹果ios手机,安卓手机,uniapp微信小程序mqtt断开怎么解决,后台应用怎么保活,uni-app中MQTT连接频繁断开如何解决?应用退到后台后MQTT连接断开以及常连接断连的问题,微信小程序、MQ

✅ 精选推荐文章 3026

java学习day11 面向对象编程oop

但是并不能代表某一个具体的事物person类,car类…

2302_81093382的博客 1233

Codex 100个真实案例 - 用AI做股票K线分析工具(技术指标全自动)

本案例将用 Codex 从零搭建一个完整的股票 K 线分析工具。通过自然语言驱动,我们让 AI 自动完成股票数据获取(akshare)、K 线图绘制(mplfinance + ECharts)、技术指标计算(MA/EMA/MACD/RSI/KDJ/布林带)、买卖信号提示(金叉/死叉、超买超卖)、多股对比分析、Web 可视化界面(Flask + ECharts)、PDF 报告生成以及定时监控邮件推送等全套功能。全程用自然语言指令驱动 Codex,零手写代码实现专业级量化分析平台!

yueyeguzhuo的专栏 864

java基础-面向对象

java基础部分-面向对象的概念,类之间关系,并部分解释了UML类图

codeglory的博客 6608

基于Simulink的占空比调制DTC降低转矩脉动

修改传统SVPWM模块,输入占空比d和有效矢量索引,计算Ton​=d∗Tc​、Toff​=(1−d)∗Tc​,生成对称PWM波形(替代开关表直接输出)。:低速时(n<500rpm)减小dmax​=0.6(避免磁链畸变),高速时(n>2000rpm)增大dmax​=0.8(提升动态响应);kT​/kψ​:转矩/磁链误差增益(需整定,如kT​=0.02/(N⋅m),kψ​=0.1/Wb);(θ为电压矢量与磁链夹角)。② SVM-DTC(占空比计算模块启用,d0​=0.5,kT​=0.02,kψ​=0.1)。

amy_mhd的博客 87

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

【Java】P11 面向对象三大特征:封装性

封装就是将客观事物抽象为类(class),并通过访问控制机制,把数据和方法选择性地开放给可信的类或对象,同时对不必要开放的部分进行隐藏。该隐藏的隐藏,该暴露的暴露—— 这就是封装性的核心思想。封装性不仅是 Java 语法特性,更是一种重要的设计思想。防止外部代码随意修改对象状态内部实现的改变不影响外部调用类的职责更加清晰,模块间依赖更少清晰的接口定义使得分工更加明确掌握封装性,是成为优秀 Java 开发者的必经之路。把该隐藏的隐藏起来,该暴露的暴露出来,让你的代码更加健壮、优雅。

weixin_43098506的博客 971

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

Java学习笔记_10 面向对象:封装、继承、多态

什么是面向对象:

行者常至,为者常成 399

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

面向对象 04:三大特性之——封装,封装的含义和作用,以及在 Java 中的使用方式,附完整的测试案例代码

本文讲述面向对象编程的三大特性之——封装。通过案例分析,简单介绍了封装的含义和作用,以及在 Java 中如何使用封装。

积累,沉淀,温故而知新 1601

java封装原则_Java面向对象的封装原则

Java面向对象的封装原则封装:通俗理解:在不想让外人看见自己所定义的内容,但是你可以使用(调用),怎么调用呢?通过先设置(set)下属性或者方法内容,然后你必须获取(get)下才可以调用。在面向对象编程思想中,不仅把汁液多、糖分多、含有挥发性芳香物质、可以生食等的共同特征放到水果类里,同时也把水果的开花、落果、膨大、成熟等共同行为放到水果类里,这样水果类既包含了水果所具备的共同特征,也包含了开花...

weixin_33195162的博客 634

JAVA_XXBJ(11)面向对象:封装,继承,多态

面向对象 Java是面向对象的,c语言是面向过程的,那么什么叫面向对象呢,打个比方:去餐厅吃饭,你点了一大桌的菜,你只需要吃就行了,而不用管他是怎么烧的,你所要面对的就是美味佳肴,而这些菜怎么做的你并不需要管。 面向对象的三大特征:封装,继承,多态 封装 封装 ...

m0_51198729的博客 267

【Java学习系列】Java面向对象之封装与继承

Java面向对象之封装与继承的小知识

Tuerlechat,的博客 353

JAVA面向对象入门学习笔记11.13

JAVA入门 java三大版本 JavaSE标准版 JavaME嵌入式开发 JavaEE企业级开发 JDK:java Development Kit java开发工具 JRE:java Runtime Environment运行环境 JVM:java Virtual Machine虚拟机 java程序运行机制 编译型(迭代翻译) 解释型(实时翻译) idea的快捷方式 psvm表示快速建一个函数 sout表示快速输出 Java基础 1.注释 // /* */ /...

加油呀 672

11、面向对象-封装、继承

一、面相对象的程序设计,设计以对象开始,实现编程是从类开始 python的类变量的修饰是隐式的 Java的类变量的修饰时显示的,用关键字static来修饰的 注意点: 类变量可以使用对象名去调用 python中类变量如果是对象去调用赋值,会产生这个类变量的副本对象 Java中不会 创建的副本可以使用del 来删除掉 面向对象的一个初级例子 python的构造方法不能有多个...

weixin_44008655的博客 215

重学java 11 封装

将一个物品封装起来,外界不能直接使用,提高了物品的安全性封装 继承 多态2.什么是封装思想将细节隐藏起来,不让外界随便使用,但是我们可以提供一个公共的接口,让外界间接使用隐藏起来的细节——>封装思想//找来了Arrays这个对象,调用了toString的方法,实现功能//将实现toString功能的细节封装隐藏起来,对外提供了一个公共的接口,使外界间接使用封装起来的细节1.如果成员变量和局部变量重名(同名)时,我们遵守“就近原则”,先访问局部变量。

m0_73983707的博客 1001

java——面向对象:封装

Java——封装

m0_74012211的博客 461
上一篇: 【Java面向对象】java学习之旅10-方法的一些特性
下一篇: 【Java面向对象】java学习之旅12-static关键词
JeffHan^_^
博客等级 码龄7年 1万+粉丝 134原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

JeffHan^_^

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值