[Java入门笔记] 面向对象三大特征之:封装

了解封装

什么是封装?

在Java的面向对象程序设计中,有三大基本特征:封装、继承和多态。首先咱们先来看看封装:安全

在Java的面对对象程序设计中,封装(Encapsulation)是指一种将函数功能实做细节部份包装、隐藏起来的方法。封装能够被认为是一个保护屏障,防止该类的代码和数据被外部类定义的代码随便访问。若是要访问类中的代码和数据,必需要经过严格的控制。函数

为何要使用封装?

使用封装主要有如下好处:this

  • 可以隐藏该类中一些功能的实现细节。让调用者经过事先实现好的方法访问类的功能和数据,同时也限制对类中数据的不合理访问。
  • 对数据进行检查,有利于保护对象信息的完整和合理性。
  • 便于对代码的修改和维护,提升代码的可维护性。

如何使用封装?

访问权限控制符

Java中一共有四个访问权限控制符,用来对类和对象的数据进行封装:spa

修饰符 类内部 同一个包 子类真 全局范围
private      
default    
protected  
public

对于外部类,也可使用修饰符,不过外部类只能使用public和默认两种修饰符。设计

例子

复制代码

public class Person {
    
    //用private修饰符修饰,外部没法访问
    private String name;  //姓名
    private int age;      //年龄
    private String idNum;  //身份证号
    
    //获得该类对象的姓名
    public String getName() {
        return name;
    }
    
    //设置该类的对象的姓名,若是传入空值,则不赋值
    public void setName(String name) {
        if(name.length() == 0 || name == null){
            return;
        }
        this.name = name;
    }
    
    //获得年龄
    public int getAge() {
        return age;
    }
    
    //设置年龄,当传入的参数大于等于0时,才将参数设置给该对象
    public void setAge(int age) {
        if(age >= 0){
            this.age = age;
        }
    }
    
    //获得身份证号
    public String getIdNum() {
        return idNum;
    }
    
    //设置身份证号
    public void setIdNum(String idNum) {
        this.idNum = idNum;
    }
  
}

复制代码

 

上面的例子中咱们为该类中的属性增长了private修饰符,外部没法再直接访问和修改这些属性,若是有须要使用,咱们则须要为其增长getXxx和setXxx方法访问这些事项,同时,咱们也能够在这些方法中对这些属性的访问进行控制,好比姓名不能为空,年龄不能为负数等等。对象

这样咱们并可见对程序的完整性和合理性进行合理的控制,也能更好的加强代码的安全性,也使代码可以更好的管理与维护。继承

复制代码

public class Test {
    public static void main(String[] args) {
        Person p = new Person();
        p.name = "张三";  //错误,没法直接访问
        p.setName("张三");
        p.setAge(-5); 
        System.out.println(p.getAge());  //输出默认值0,尽管咱们在上一行代码中传入一个数值,可是咱们在setAge方法中作了控制,因此传入的负数并无赋给p对象
    }

}

复制代码

 

使用原则

关于访问控制符的使用,咱们使用应当尽可能符合下面一些原则:ci

  • 类的大部分红员变量,都应该使用private修饰符,只有一些static、全局变量的Field,才考虑使用public修饰符。
  • 若是某个类主要用做其余类的父类,类中的大部分方法和属性但愿被子类重写和使用,而又不想被外部直接调用,则应当使用protected修饰符。
  • 但愿被暴露出来直接被外部使用的方法,应当使用public修饰符。
  • 一个方法的功能只有在类的内部被调用时,应当使用private修饰符。
相关文章
相关标签/搜索