首先说一下面向对象的三大特征:封装、继承、多态。
先来说一下封装,我们在生活中,假如要开车,只需要按照一定的程序操作即可,不需要了解车的内部到底是如何运行的,在程序中也是一样。
我们在写程序的时候要遵循的一个原则是:高内聚,低耦合。
高内聚:就是把内部操作细节自己完成,不需要对外暴露。
低耦合:仅对外暴露部分方法用于使用
隐藏对象内部的复杂性,只对外暴露简单的接口用于使用。从而提高系统的可扩展性课维护性。这就是封装。
通俗的说,把该隐藏的隐藏起来,该暴露 的暴露出来。这就是封装性的设计思想。
为什么要用到封装?
我们来从专业的角度分析以下为什么要用到封装。
如果我们对类内部的所有成员,都设置为公共的,那么我们的程序将会有安全性问题,也会在调用时产生混乱。
所以,我们要把类内部的属性封装起来,只供类内部自己调用,对外提供相应的getXxx()和setXxx()方法,用于对该属性操作,从而避免上述问题
封装的好处:
- 使用者只能通过事先定制好的方法来访问数据,可以方便地加入控制逻辑, 限制对属性的不合理操作;
- 便于修改,增强代码的可维护性;
权限修饰符
封装,我们都会用到权限修饰符。Java提供了这几种修饰符:public、缺省、protected、private
这四种权限修饰符的权限如下图所示
以上四种修饰符的用法就是在定义成员的时候在定义关键字前面加。
像是
public static void main(String[] args) private int age;
但是对于class的权限修饰,只能用public和default(缺省)。
public可以任意的访问(去掉’)
缺省只能在类的内部访问
我们下面看一下用来封装性的代码是什么样子的:
//创建一个类 class Person{ //创建两个权限为私有的属性 private int age; private String name; //提供两个get、set方法对以上两个属性进行操作 public int getAge(){ return age; } public void setAge(int age){ this.age = age; } public String getName(){ return name; } public void setAge(String name){ this.name = name; } //在需要调用的地方创建类的对象 //然后调用类的方法来进行对属性进行操作即可 }