Java基础复习-2-三大特性

一、封装

参考链接

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

封装的好处

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

封装的实现

  1. 需要修改属性的访问控制符(修改为private);一旦使用了private进行修饰,那么本类当中仍然可以随意访问。但是!超出了本类范围之外就不能再直接访问了。
  2. 创建getter/setter方法(用于属性的读写);
  3. 在getter/setter方法中加入属性控制语句(用于判断属性值的合法性)。

间接访问private成员变量,就是定义一对儿Getter/Setter方法。必须叫setXxx或者是getXxx命名规则。对于Getter来说,不能有参数,返回值类型和成员变量对应;
对于Setter来说,不能有返回值,参数类型和成员变量对应。

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;
    }
}

如果没有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;
            }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值