JAVA入门级教学之(封装)

 先定义一个用户类

package com.lbj.javase;
/** 用户类* */
public class User {//年龄public int age;
}

 

 

再定义一个测试类,来感受一下什么是封装,到底为什么要封装? 

package com.lbj.javase;
/*** 用户测试类* @author 14811* 对于当前程序来说:User类中的age属性在外部程序中可以随意访问,导致age属性的不安全* 以下程序中年龄值为负数,程序运行时没有报错,这是当前程序存在的缺陷* * 当前主讲封装机制。为什么要封装?封装有何好处?* * 	1.封装后,对于指定事物来说,看不到事物比较复杂的一面,只能看到事物简单的一面* * 	2.封装之后才会形成真正的对象,真正的独立体* * 	3.封装意味着程序可以重复使用,在任何场景都可以使用* * 	4.封装只提供简单的操作入口,提高了安全性* * */
public class UserTest {public static void main(String[] args) {// TODO Auto-generated method stub//创建User对象User user=new User();//访问age//读取年龄值【get】System.out.println("用户年龄:"+user.age);//修改年龄值//这里的age属性完全暴露给外部程序,对于程序员来说可以操作User对象中的所有细节【数据不安全】//不建议这样,建议User类型进行封装,建议在外部程序中不能随意访问User对象中的属性,这样可以保证属性的安全user.age=10;//访问age//读取年龄值【get】System.out.println("用户年龄:"+user.age);user.age=-10;System.out.println("用户年龄:"+user.age);}}

再重新创建一个包,包里面新建一个用户类

 

package com.lbj.javase02;
/*** * @author 14811*封装步骤:*	1.所有属性私有化,使用private关键字进行修饰,private表示私有的,修饰的所有数据只能在本类中访问。*	*	2.对外提供简单的操作入口,也就是说以后外部程序想要访问age属性,必须通过这些简单的入口进行访问*		-对外提供两个公开的方法,分别是set方法和get方法*		-想修改age属性,调用set方法*		-想读取age属性,调用get方法**	3.set方法的命名规范:*		 public void setAge(int a){//set+首字母大写*		   age=a;*		 { *		*  4.get方法的命名规范:*  	 public int getAge(){//get+首字母大写*		   return age*		 {	* 	5.setter and getter 方法没有static关键字* 	   有static关键字修饰的方法怎么调用:类名.方法名(实参);* 	  没有static关键字修饰的方法怎么调用:引用.方法名(实参);***/
public class User {//私有化定义的年龄age,外类不允许访问private int age;//set方法没有返回值,因为set方法只负责修改数据/*public void setAge(int age){age=age;//java有就近原则,这里其实并没有给age属性赋值,因为这里的age都是局部变量}//报错//接下来迟一点会介绍this关键字的用法,就会明白这里的道理了*///setterpublic void setAge(int a){//编写业务逻辑代码进行安全控制//age=a;//如果说传过来的年龄不符合实际要求就不可以传进来并提示错误信息实现安全控制if(a<0||a>150){System.out.println("对不起,您提供的年龄不合法");return;}//如果程序执行到这里的话,说明a年龄是合法的,则进行赋值运算age=a;}//getterpublic int getAge(){return age;}}

 

新建一个测试类,这就是封装:

package com.lbj.javase02;public class UserTest {public static void main(String[] args) {// TODO Auto-generated method stub//创建User对象User user=new User();//编译报错,age属性私有化private,在外部程序中不能直接访问//从此之后age属性非常安全,但是有点太安全了,对于外部的私有类彻底访问不到//System.out.println(user.age);user.setAge(10);System.out.println(user.getAge());//私有属性不能在外部直接访问,因此需要封装访问//user.age;}}

 

 

 

 

 

 

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

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

相关文章

mysql 查询 distinct,MySQL 去重复查询 distinct 用法和group by

去重复查询 可以使用 distinct 用法和group by (本文部分内容参考网上资料)在使用mysql时&#xff0c;有时需要查询出某个字段不重复的记录&#xff0c;虽然mysql提供有distinct这个关键字来过滤掉多余的重复记录只保留一条&#xff0c;但往往只用它来返回不重复记录的条数&…

python求一元三次方程的根_初中数学专题复习-方程与方程组

基础知识点&#xff1a;一、方程有关概念1、方程&#xff1a;含有未知数的等式叫做方程。2、方程的解&#xff1a;使方程左右两边的值相等的未知数的值叫方程的解&#xff0c;含有一个未知数的方程的解也叫做方程的根。3、解方程&#xff1a;求方程的解或方判断方程无解的过程叫…

JAVA入门级教学之(什么是类加载)

那类加载呢&#xff0c; 指的是将类的.class文件中的二进制数据读入到内存中&#xff0c;把它放进运行时数据区的方法区内&#xff0c;然后在堆区创建一个java.lang.Class对象&#xff0c;封装这个 类在方法区 内的数据结构。类的加载的最终产品是 位于堆区中的Class对象…

基于matlab的pcb焊盘,EDA复习题

考试题型理论知识40分&#xff0c;操作题60分1、单选题2、填空题3、判断题4、4、绘制原理图5、在Multisim环境下仿真测试6、在QuartusⅡ环境下&#xff0c;按要求完成设计及编译仿真复习题1. PCB的布局是指()。A. 连线排列B. 元器件的排列C. 元器件排列与连线排列D. 除元器件以…

amd核芯显卡控制面板自定义分辨率_AMD翻盘,NVIDIA翻车,你的下一张光追显卡选哪个...

翻车年年有&#xff0c;今年特别多&#xff01;本该是NVIDIA 30系列显卡的独家秀&#xff0c;却被AMD在29日凌晨的新品发布会上截了胡&#xff0c;迎来罕见的新卡大面积翻车。据行内消息称&#xff0c;RTX 3080 20GBRTX 3070 TiRTX 3070 16GB这三款新卡都被老黄临时取消&#x…

JAVA入门级教学之(构造方法)

package com.lbj.javase03; /*** * author 14811* 关于java类中的构造方法&#xff1a;* 1.构造方法又被称为构造函数/构造器/constructor* * 2.构造方法的语法结构&#xff1a;* [修饰符列表] 构造方法名(形式参数列表){* 构造方法体; * }* * 3.回顾普通方法的语…

php factory interface,PHP设计模式之工厂方法*解读

「PHP」工厂方法是针对每一种产品提供一个工厂类。通过不同的工厂实例来创建不同的产品实例。相比简单工厂 &#xff0c;创建对象这件事不再交由一个类来创建&#xff1a;把简单工厂拆分&#xff0c;每个产品由专门的一个简单工厂来实现&#xff0c;每个简单工厂实现工厂接口类…

宽量程电压电流 stm32_电压、电阻知识点汇总

电压(一)电压的作用1.电压是形成电流的原因&#xff1a;电压使电路中的自由电荷定向移动形成了电流。电源是提供电压的装置。2.电路中获得持续电流的条件&#xff1a;①电路中有电源(或电路两端有电压)&#xff1b;②电路是连通的。 3.在理解电流、电压的概念时&#xff0c;通过…

JAVA入门级教学之(对象和引用)

对象和引用&#xff1a; 对象&#xff1a;目前在使用new运算符在堆内存中开辟的内存空间称为对象 引用&#xff1a;是一个变量&#xff0c;不一定是局部变量&#xff0c;还可能是成员变量。引用保存了内存地址&#xff0c;指向了堆内存中的对象 所有访问实例相关的数据&#…

matlab多变量频域设计工具箱,10.4.3用MATLAB实现连续系统的频域分析.ppt

10.4.3用MATLAB实现连续系统的频域分析.ppt第10章 MATLAB在信号与系统分析中的应用 10.0 引  言    一般来说,MATLAB系统包括下面五个主要部分。  (1)编程语言:是一种以矩阵和数组为基本单位的编程语言;  (2)工作环境:包括了一系列应用工具,提供编程和调试程序的环境…

group by 去重_【小学英语口语】07I have to pee. 我要去尿尿

内容请看 ◆◆ ◆ 点下方录音跟读I have to pee.我要去尿尿。I have to poop.我要去便便。I m about to poop.我快要拉出来了。Take off your pants first.先把你的裤子脱下来。Don t forget to flush.别忘了冲水。Don t use too much toilet paper. 不要用太多的厕纸。Phew! I…

JAVA入门级教学之(参数传递)

JAVA入门级教学之&#xff08;参数传递&#xff09; 问题引入&#xff1a; 参数分为形式参数还有实际参数&#xff0c;我们传入是的数据到底是什么呢&#xff1f; 方法调用的时候&#xff0c;涉及参数传递的问题&#xff0c; 传递的时候&#xff0c;java只遵循一种语法机制 就…

java过滤器的优点好处,Servlet过滤器概念特点等详谈

Servlet过滤器概念特点等详谈一、Servlet过滤器的概念&#xff1a;◆Servlet过滤器是在Java Servlet规范2.3中定义的&#xff0c;它能够对Servlet容器的请求和响应对象进行检查和修改。◆Servlet过滤器本身并不产生请求和响应对象&#xff0c;它只能提供过滤作用。Servlet过期能…

ionic 支持float吗_机器人协会 | 一起拼机器人吗?

数字生活改变世界科技创新引领未来机器人协会开始招新啦~~东莞职业技术学院机器人协会成立于2016年&#xff0c;由东莞职业技术学院电子与电气工程学院支持&#xff0c;由工业机器人技术专业的学生成立。协会位于东莞市东莞职业技术学院实训楼6C4-203。协会成员于2018年获得世界…

JAVA入门级教学之(this关键字)

this关键字 关于java语言中的this关键字 1.this是一个关键字&#xff0c;翻译为&#xff1a;这个 2.this是一个引用&#xff0c;this是一个变量&#xff0c;this变量中保存了内存地址指向了自身&#xff0c;this存储在JVM堆内存java对象内部 3.创建100个java对象&#xf…

qsplitter 折叠_河南断桥折叠门效果

断桥折叠门效果。天津庭窗之星建材优秀的表面处理型材工艺&#xff0c;人性化的设计理念&#xff0c;精湛的制造工艺。产品具有环保&#xff0c;耐用&#xff0c;耐腐蚀不褪色&#xff0c;安全、保温、隔音等特性。阳光房框架结构不坚固 阳光房框架结构不坚固&#xff0c;是导致…

php 计划任务管理,使用php管理crontab计划任务

1.使用php-crontab-manager管理计划任务要求 PHP>5.3使用方法举例use php\manager\crontab\CrontabManager;$crontab new CrontabManager();$crontab->enableOrUpdate(/tmp/my/crontab.txt);$crontab->save();添加一个简单的计划任务:use php\manager\crontab\Cronta…

串行口方式二 波特率_一文就能看懂“串口通讯”的概念、3个通讯方式、9大注意事项...

串行通信是数据处理设备和外围设备之间最广泛使用的信息传输方法。每个设备可能是您的个人电脑或移动设备在运行串行协议。该协议是一种安全可靠的通信形式&#xff0c;由源主机(发送方)和目的主机(接收方)制定一套规则。为了获得更好的洞察力&#xff0c;我已经解释了串行通信…

冯提莫在B站的受欢迎度

本来以为冯提莫在离开斗鱼之后&#xff0c;离开了那些喜欢她的粉丝之后&#xff01;很难发展起来&#xff0c;但谁能想到冯提莫在离开斗鱼之后&#xff0c;加入了B站&#xff0c;之前的老粉丝们也一下子涌入了B站&#xff0c;为B站带来了很多的流量&#xff01;同样冯提莫也收获…

php中如何将验证码放入页面,如何在php中生成验证码图片

1.获取生成验证码字体&#xff1a;在php文件路径新建一个fonts文件夹&#xff0c;里面有字体文件。//判定字体资源if(empty($fonts))$fonts"arial.ttf";//确认字体路径$fonts__DIR__."/fonts/".$fonts;$fontsstr_replace("/","\\",$fo…