Java 封装Encapsulation

定义
将函数实现细节封装起来,防止代码和数据被外部类随意访问。
要访问该类的代码和数据,必须通过严格的接口控制

优点
减少耦合
便于理解、维护
隐藏代码细节,控制外部访问,增强安全性
内部结构可以自由修改
对成员变量进行精确控制

实现Java封装的步骤

  1. 修改属性的可见性来限制外部类对属性的访问(一般限制为private私有)
  2. 对私有属性创建一对赋取值方法,用于外部访问

实例

package TestEncapsulation;

public class EncapsulationPerson {
    
    
	// 设置为private,只有本类才能访问,外部无法直接访问
    private String name;
    private int age;

	// 外部类访问该类成员变量的入口,被称为getter和setter方法
    // 访问类中私有成员变量,都要通过这些getter和setter方法

    public void setAge(int age) {
    
    
        this.age = age;
        // this 解决实例变量(private String name)和局部变量(setName(String name)中的name变量)之间发生的同名的冲突
    }

    public int getAge() {
    
    
        return age;  // 不用加this
    }

    public void setName(String myName) {
    
    
        name = myName;  // 不同名,不需要加this
    }

    public String getName() {
    
    
        return name;
    }
}
package TestEncapsulation;

public class TestEncapsulation {
    
    
    public static void main(String[] args) {
    
    
        EncapsulationPerson person = new EncapsulationPerson();
        System.out.println("age: " + person.getAge());  // 实例变量,未赋值,会有默认值0
        person.setAge(23);
        System.out.println("age: " + person.getAge());

        System.out.println("name: " + person.getName());  // 实例变量,未赋值,会有默认值null
        person.setName("doudou");
        System.out.println("name: " + person.getName());

//        System.out.println(person.name);  // name 在 TestEncapsulation.EncapsulationPerson 中是 private 访问控制
    }
}

猜你喜欢

转载自blog.csdn.net/test121210/article/details/114160930
今日推荐