Java的特性详解-封装

封装

封装的定义

封装(Encapsulation)是面向对象方法的重要原则,就是把对象的属性和操作(或服务)结合为一个独立的整体,并尽可能隐藏对象的内部实现细节。

封装的好处

  1. 良好的封装能够减少耦合。
  2. 类内部的结构可以自由修改。
  3. 可以对成员进行更精确的控制。
  4. 隐藏信息,实现细节。
public class Person{
    private String name;
    private int age;
    private String sex;

    public String getName(){
        return name;
    }
    public void setName(String name){
        this.name = name;
    }
    private int getAge(){
        return age;
    }
    private void setAge(int age){
        this.age = age;
    }
    public void setSex(String sex){
        this.sex = sex;
    }
}

那么对于这些属性来说,使用private封装属性的目的就是保护数据,不让人随意破坏,强制只能在本类中使用


如果在其他类中想要通过其他类的对象来调用Man这个类的私有属性,就很不方便,因为设置成了private私有属性


所以会在定义好private之后,在下面再进行public访问的权限的赋值setter和获取getter两种方法的封装

如果没有setter(),getter()的话,那么Person类应该是这样的:

public class Person {  
    public String name ;  
    public String sex ;  
    public int age ;   
}


我们应该这样使用它:

Person person = new Person();  
person.age = 25;  
person.name = "张三";  
person.sex = "男";


但是如果需要修改Person,比如将sex修改为int类型,几十或者上百个这样的地方估计要改到崩溃,如果封装了,只需要修改setSex()方法就好了。另外,封装确实可以使我们容易地修改类的内部实现,而无需修改使用了该类的客户代码。还有针对某些成员变量,不想让其他类知道值为多少,就可以不去做getter()操作,比如Person类中的sex,不想让其他人知道性别,就不做getSex()。还有就是private修饰的成员变量以及成员函数,只能无法在类外调用,做到隐藏的作用。比如:Person类中的成员变量以及getAge()和setAge()在其他类是无法获取到的。

public class Person{
    private String name;
    private int age;
    private int sex;//1:男;2:女;0:保密

    public String getName(){
        return name;
    }
    public void setName(String name){
        this.name = name;
    }
    private int getAge(){
        return age;
    }
    private void setAge(int age){
        this.age = age;
    }
    public void setSex(String sex){
        if(StringUtils.isNotEmpty(sex)){
            if(sex.equals('男')){
                this.sex = 1;
            }else if(sex.equals('女')){
                this.sex = 2;                   
            }else{
                this.sex = 0;
            }
        }else{
            System.out.println("请输入性别!");    //提示错误信息
        }
    }
}

就是该露的露,该藏的藏

我们在程序设计的过程中要追求“高内聚,低耦合”。高内聚就是类的内部数据操作细节自己来完成,不允许外部干涉,低耦合:就是, 仅暴露少量的方法给外部使用。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值