面向对象的封装性
封装的好处:
- 1、封装之后,对于那个事物来说,看不到这个事物比较复杂的一面,只能看到该事物简单的一面。复杂性封装,对外提供简单的操作入口。照相机就是一个很好的案例,照相机的实现原理比较复杂,但是对于使用照相机的人来说,操作起来是非常方便的。还有像电视机也是封装的,电视机内存实现非常复杂,但是对于使用者来说不需要关心内部的实现原理,只需要会操作遥控器即可。
- 2、封装之后会形成真正的“对象”,真正的“独立体”。
- 3、封装就意味着以后的程序可以重复使用。并且这个事物应该适应性比较强,在任何场合都可以使用。【可重用性】
- 4、封装之后,对于事物本身,提高了安全性【安全级别高】
封装的步骤:
1、所有属性私有化,使用private关键字进行修饰,private表示私有的,修饰的所有数据只能在本类中访问
2、对外提供简单的操作入口,也就是说外部程序要想访问age属性,必须通过这些简单的入口进行访问:
- 对外提供两个公开的方法,分别是set方法和get方法
- 想修改age属性,调用set方法
- 想读取age属性,调用get方法
3、set方法的命名规范:public void set + 属性名首字母大写(形参){ };
public void setAge(int a){
age = a;
}
4、get方法的命名规范:public 返回值类型 get + 属性名首字母大写(形参){ };
public int getAge(){
return age;
}
5、需要背会的:
- setter和getter方法没有static关键字
- 有static关键字修饰方法怎么调用?
类名.方法名(实参);
- 没有static关键字修饰方法怎么调用?
引用.方法名(实参);
例:
public class UserTest
{
public static void main(String[] args){
User user =new User();
//编译报错,age属性私有化,在外部程序中不能直接访问
//从此之后age属性非常的安全,但是有点太安全了。
//对于目前程序来说,age属性彻底在外部访问不到了。
//System.out.println(user.age);
//修改
user.setAge(-100);//对不起,您提供的年龄不合法
//读取
System.out.println(user.getAge());//0
}
}
public class User
{
//属性私有化
private int age;
}
public void setAge(int a){
//编写业务逻辑代码进行安全控制
//age = a;
if(a<0||a>150){
System.out.println("对不起,您提供的年龄不合法");
return;
}
//程序可以进行到这里的话,说明a是合法的,则进行赋值运算
age = a;
}
public int getAge(){
return age;
}