封装


封装

java三大特性之一封装,就是把内部数据“隐藏”起来,只暴露少量方法供外部使用,比如日常生活使用的电子产品,使用者只需要知道怎么去使用,不用去了解其内部构造。

高内聚,低耦合:内部数据不允许多部干涉,仅提供少量方法外部使用

对数据的隐藏,应禁止外部可直接访问对象内部数据,应通过接口间接访问

封装的步骤

  1. 使用private修饰需封装的成员变量

  2. 提供get/set方法供外部访问私有的内部成员

    public class Student{
    	private String name;
    	private int age;
    	private int ID;
        
        public Student(){}
        public Student(String name,int age,int id){
            this.name = name;
            this.age = age;
            this.ID = id;
        }
        //通过set方法让外部可以设置成员变量
    	public void setName(String name){this.name = name;}
        public void setAge(int age){this.age = age;}
        public void setID(int id){this.ID = id;}
        //通过get方法可以获取成员变量的值
        public String getName(){return this.name;}
        public int getAge(){return this.age;}
        public int getID(){return this.ID;}
    }
    

    在set方法中可以对数据合法性、完整性检测,让程序规避不合法的数据,如年龄应该在0~100之间,名字应该在32个字符内,学员id应该不超过20个数字等

作用和意义

  1. 成员私有化,保护了数据
  2. 提高程序的安全性、可维护性
  3. 统一用户的调用接口,便于调用者调用

由于成员私有化提供了访问接口,外部无法直接操作,保护了数据,提高程序的安全性,也对数据进行了合法的检测,确保了合法性;由于设罟了get/set方法使得代码更清晰,也提高了可维护性,方便外部调用

方法的重载

方法的重载可以提供方法调用的灵活性。

  1. 方法名必须相同
  2. 参数列表必须不同(参数的类型、个数、顺序的不同)
  3. 方法的返回值可以不同,也可以相同。
public void test(Strig str){}
public void test(int a){}

public void test(Strig str,double d){}
public void test(Strig str){}

public void test(Strig str,double d){}
public void test(double d,Strig str){}

相关