JAVA 封装

封装

面向对象三(四)大特性之一

目的

  • 保护类中的属性,阻止在外部随意 访问、修改 属性。例子:你们家的钱肯定要保护好,不能让外人花

  • 隐藏细节,将一些算法、操作封装到方法中。比如取款机中的键盘,用户只需要知道按哪个键实现什么操作就可以,至于它内部是如何运行的,用户不需要知道。

不封装的缺点

public class Student {
    String name;
    int age;   
}
public class Test {

    public static void main(String[] args) {
        Student lilei=new Student();
        lilei.name="李雷";
//        lilei.age=20;
        lilei.age=200;//数据出问题了,程序仍正常运行
        lilei.age=-20;//数据出问题了,程序仍正常运行
    }
}

对成员变量的封装

将成员变量 隐藏 起来,若需要访问、修改某个属性,提供 公共方法 对其访问、修改。

封装的步骤

  1. 使用 private 关键字来 修饰成员变量。

  2. 如果需要 访问 成员变量,提供 getter方法

  3. 如果需要 修改 成员变量的值,提供 setter 方法

private权限修饰符

private的含义

  1. private是一个权限修饰符,代表最小权限。
  2. 可以修饰 成员变量 和 成员方法。
  3. 被private修饰后的成员变量和成员方法,只能在 本类中访问。

private的使用格式

private 数据类型 变量名;

例子

使用 private 修饰成员变量

public class Student {
    private String name;
    private int age;
}

提供 getter 方法 / setter 方法

这种类也叫 java bean

通过 getter方法 / setter方法 访问成员变量,代码如下:

public class Student { 
    private String name;
    private int age;
    public void setName(String n) {
        name = n;
    }
    public String getName() {
        return name;
    }
    public void setAge(int age) {
        if(age<0 || 180<age){//保护作用,过大过小都会提示
            System.out.println("年龄设置错误!");
            return;//不在继续往下执行,跳出方法继续执行
        }
        this.age = age;
    }
    public int getAge() {
        return age;
    }
}

测试

public class Test {

    public static void main(String[] args) {
        Student lilei=new Student();//通过new关键字调用无参构造方法(默认构造方法),我们没有定义,那么java编译器给我们提供了构造方法
        lilei.name="李雷";
//        lilei.age=20;
        lilei.age=200;//数据出问题了,程序仍正常运行
        lilei.age=-20;//数据出问题了,程序仍正常运行
        lilei.setName("李雷");
//        lilei.setAge(20);
//        lilei.setAge(-20);
        lilei.setAge(200);

        System.out.println(lilei.getName());
        System.out.println(lilei.getAge());

    }
}

原文出处:/show_1EF4rWI5BdyA.html