为什么要封装

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

搜索关注公众号「享智同行」,第一时间获取技术干货

最新文章

  1. sql 代码笔记
  2. mave web常用配置文件参数
  3. js自定义正则表达式
  4. Android IOS WebRTC 音视频开发总结(十三)-- ice原理
  5. JS函数式编程【译】第二章总结
  6. 爬虫实现(hpricot)
  7. C语言面试题(嵌入式开发方向,附答案及点评)
  8. [Windows] php开发工具,zendstudio13使用方法补丁
  9. Jdt Javax
  10. KEEP!
  11. AppCompatActivity 去掉标题栏和EditText弹出软键盘遮住输入框问题
  12. Nginx+Keepalived 集群方案
  13. 每天学点Linux-切割命令split
  14. JSP—连接池
  15. 20155229 2016-2017-2 《Java程序设计》第五周学习总结
  16. LOOP AT GROUP语法熟悉
  17. redis基本使用
  18. HTML&CSS精选笔记_HTML入门
  19. Array.new(5, [1, 2, 3]) or Array.new(5) { [1, 2, 3] }的差别
  20. ubuntu搭建LAMP全教程及简单使用

热门文章

  1. 关于Git的那些事
  2. ORM之PetaPoco
  3. linux命令之网络管理命令(下)
  4. OCP 052新加的考试题收集整理-第20道
  5. kvm linux虚拟机在线扩展磁盘
  6. 模拟RHCSA考试环境
  7. 各大SRC中的CSRF技巧
  8. 关于logstash-out-mongodb插件说明
  9. Your branch is ahead of &#39;origin/master&#39; by 1 commit.
  10. PyQt5(1)——Qt Designer初探