Java入门系列-15-封装
为什么要封装
Student stu=new Student(); stu.age=-10;
上面的代码中 age 属性被随意访问,容易产生不合理的赋值
什么是封装
封装:将类的某些信息隐藏在内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问。
封装是面向对象三大特征之一
封装后隐藏了类的实现细节,方便我们加入控制语句保证数据安全性,方便修改实现。
Java 中实现封装可以用以下3步实现:
1.修改属性的可见性,设为 private (类外部无法访问)
2.创建共有的 getter/setter 方法用于属性读写
3.在 getter/setter 方法中加入属性控制语句
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) { if(age>0&&age<=100) {//年龄大于0小于100 this.age = age; }else { this.age=18;//默认值 } } public static void main(String[] args) { Student stu1=new Student(); //给属性赋值 stu1.setAge(10); stu1.setName("张三"); //使用属性的值 System.out.println(stu1.getName()+" 的年龄为:"+stu1.getAge()); Student stu2=new Student(); stu2.setAge(110); stu2.setName("李四"); System.out.println(stu2.getName()+" 的年龄为:"+stu2.getAge()); } }
在使用 private 关键字修饰属性之后,就不能再直接访问属性了,而是需要通过 getter 和 setter 方法进行取值和赋值。
在 Eclipse 中可以使用 Shift+Alt+S+R 自动生成 getter/setter
在 Idea 中使用 Alt+Insert 后选择 Getter and Setter
搜索关注公众号「享智同行」,第一时间获取技术干货
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
聚能聊每周精选 第十七期
聚能聊的粉丝们(聚丝,听起来像果汁),好久不见。 从中秋到国庆,让我们蓄精养锐的日子过去,接下来是“剁手”、“卖肾”的双十一。有人在岗位上奋斗,有人在游戏上奋斗,有人为之在烧脑,有人为之在烧钱,有人被掏空了身体,有人被清空了购物车,你是“有人”中的哪一种人? 接下来,让我们一起回顾一下,近期都有哪些热议的话题。 . 近期热议话题 Top1. 在互联网行业里面,想法和技术哪个更重要? 在整个互联网行业技术出身的大佬有很多,比如腾讯马化腾,深圳大学计算机毕业,码农生涯走得极稳。小米雷军毕业于武汉大学计算机系,仅用了两年时间修完了所有学分,写程序有写诗的感觉,还写过加密软件、杀毒软件、财务软件、CAD软件、中文系统以及各种实用小工具等,曾获得过十大功勋程序员的奖章...查看详情 Top2. 你觉得程序员和黑客的差别在哪? 首先来看看百度对这两者的定义:程序员(英文Programmer)是从事程序开发、程序维护的专业人员。一般将程序员分为程序设计人员和程序编码人员,但两者的界限并不非常清楚,特别是在中国。软件从业人员分为初级程序员、中级程序员、高级程序员(现为软件设计师)、系统分析员,系统架构...
- 下一篇
Windows下快速配置virtualenv和virtualenvwrapper
一、安装virtualenv和virtualenvwrapper 二、配置环境变量 进入系统属性设置系统变量,添加WORKON_HOME环境变量到你指定的文件夹,不设置的话创建的虚拟环境文件夹会放到C盘用户目录下的Envs文件夹下,这里新建的文件夹。
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS8安装Docker,最新的服务器搭配容器使用
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- CentOS关闭SELinux安全模块
- MySQL8.0.19开启GTID主从同步CentOS8
- SpringBoot2整合Redis,开启缓存,提高访问速度
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- SpringBoot2全家桶,快速入门学习开发网站教程
- SpringBoot2初体验,简单认识spring boot2并且搭建基础工程
- CentOS8编译安装MySQL8.0.19