您的位置:首页 > 其它

面向对象三大特征之封装

2016-09-26 23:52 260 查看
面向对象三大特征:封装、继承、多态

看着样一个例子:



存在问题: 性别有问题?

根本原因: 由于其他人可以直接操作sex属性。可以对sex属性进行了直接的赋值。

由此引出了封装:

一、权限修饰符:权限修饰符就是控制变量以及方法等等的可见范围的。一共有四种,在此先介绍两种。

1、public : 公共的。 public修饰的成员变量或者方法任何人都可以直接访问。

2、private : 私有的, private修饰的成员变量或者方法只能在本类中进行直接访问。

二、封装的步骤:

1、使用private修饰需要被封装的属性。

2、提供一个公共的方法设置或者获取该私有的成员属性。

1)命名规范:

set属性名();
get属性名();




2)疑问: 封装一定要提供get或者set方法吗?

答:不一定, 根据需求而定的。

3)(不成文的)规范 : 在现实开发中一般实体类的所有成员属性(成员变量)都要封装起来。

a)实体类:用于描述一类事物的就称作为实体类。

b)不是所有类都是用来描述事物的,还有像工具类(Arrays数组的工具类):

三、封装的好处:

1、提高数据的安全性。

2、操作简单。(相对调用者而言的,省略了一些判断条件,直接调用就可以了)

3、隐藏了实现。

四、举例:

1、使用java类描述一个计算器类,计算器具备操作数1, 操作数2 、操作符三个公共 的属性,还具备计算的功能行为。

要求: 不能直接对操作数1,操作数2,运算符 (+ - * / )这些属性进行直接 的赋值,要封装起来。根据需求提供get或者set方法。

2、代码:

//计算器类
class Calculator{
private int num1; //操作数1
private int num2;  //操作数2
private char option ; //运算符

//提供公共的方法设置属性值(一般都是使用set、get来命名,但不是规定,这样写也OK)
public void initCalculator(int n1 , int n2 , char o){
num1 = n1;
num2 = n2;
//引用类型(如字符串)才使用equals()方法进行比较,而八大基本类型使用”==“,即可。
if(o=='+'||o=='-'||o=='*'||o=='/'){
option = o;
}else{
option = '+';
}
}

//计算的功能
public void calculate(){
//为什么没有default,因为把变量封装起来后,添加了一些判定条件就不会出现不想要的情况。
switch(option){
case '+':
System.out.println("做加法运算,结果是:"+(num1+num2));
break;
case '-':
System.out.println("做减法运算,结果是:"+(num1-num2));
break;
case '*':
System.out.println("做乘法运算,结果是:"+(num1*num2));
break;
case '/':
System.out.println("做除法运算,结果是:"+(num1/num2));
break;
}
}
}

class Demo1{
public static void main(String[] args) {
//创建了一个计算器对象
Calculator c = new Calculator();
//设置属性值
c.initCalculator(1,2,'a');
//调用计算器的计算功能
c.calculate();
}
}


3、效果:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  封装