7.封装
Posted duanfu
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了7.封装相关的知识,希望对你有一定的参考价值。
封装:
其实就是大家字面上所能看到的那种意思,把一个东西封装,装起来,只留一个口,只有那个口才能让别人拿到。比如看电视的时候,我们只需要拿遥控器换一下台就可以了,没有必要去了解电视机内部的构造,你也没有必要去碰那些显像管,那些制造的厂家为了我们方便的去使用电视,它就把内部非常复杂的一些细节,全部都给它封装起来了,值给我们暴露一些简单的接口。这样的话,你如一个电源开关,比如说一个换台键,这样的话,用户就可以玩了,不需要让用户全部了解里面的产品的所有东西。这就是封装。
该露的露,该藏的藏:我们要把该暴露给用户的一些东西给暴露出来,但大部分程序的一些细节,都应该藏起来。我们程序设计要追求“高内聚,低耦合”。高内聚就是类的内部数据操作细节自己完成,不允许外部干涉;比如银行的钱,他只能由银行内部人员操作,不应该让所有人操作,每个人只能操作自己当前的那个账户。低耦合:仅暴露少量的方法给外部使用。比如说,都是去取钱,能取钱的是不是只有一些普通的用户才可以,而顾客不能操作里面的钱,不能把钱借给别人。顾客的所有东西只能围绕着那张小卡来,方法是有限的。
代码中呢,记住这句话:属性私有,get/set,有时候set方法里会做一些安全性的验证的判断。
封装的意义:
- 提高程序的安全性,保护数据
- 隐藏代码的实现细节:刚才的设计年龄,用户只能去设置年龄,而里面的细节他是根本不知道的,作为一个调用者,他根本不知道类里面到底干了什么,当然我们时上帝视角,我们是开发人员,我们肯定知道。
- 统一接口:就是所有的方法都是get、set、形成了一个规范,用户调用的接口那就是这一个。
- 系统的可维护性增加了:良好的封装便于我们修改内部代码,可以提高咱们程序的可维护性。
通常把数据封装(数据的隐藏),避免程序去直接访问一个对象中数据,而应通过接口方法来进行操作。
1 package com.oop.demo03; 2 3 //类 private:私有 4 public class Student { 5 6 //属性私有 7 private String name;//名字 8 9 private int id;//学号 10 11 private char sex;//性别 12 13 private int age;//年龄 14 15 //提供一些可以操作这个属性的方法! 16 //提供一些public的get set方法 快捷键:alt+insert -->setter getter 17 18 //get 获取这个数据 19 20 public String getName() { 21 return name; 22 } 23 24 //set 给这个属性设置值 25 26 public void setName(String name) { 27 this.name = name; 28 } 29 30 public int getId() { 31 return id; 32 } 33 34 public void setId(int id) { 35 this.id = id; 36 } 37 38 public char getSex() { 39 return sex; 40 } 41 42 public void setSex(char sex) { 43 this.sex = sex; 44 } 45 46 public int getAge() { 47 return age; 48 } 49 50 //通过一些内部的封装让程序变的更安全、避免用户破坏系统 51 public void setAge(int age) { 52 if (age > 120 || age < 0) { 53 age = -1; 54 } else { 55 this.age = age; 56 } 57 } 58 59 }
1 package com.oop; 2 3 import com.oop.demo03.Student; 4 5 public class Application { 6 7 public static void main(String[] args) { 8 Student s1 = new Student(); 9 10 s1.setName("断浮"); 11 12 System.out.println(s1.getName());// 13 14 //s1.setAge(999);//不合法 15 s1.setAge(70); 16 System.out.println(s1.getAge());//70 17 } 18 19 }
以上是关于7.封装的主要内容,如果未能解决你的问题,请参考以下文章