1.封装的概念

  封装是面向对象的核心思想,其主要目的是将对象的属性和行为封装起来,外界不需要知道具体的实现细节,使用的时候只有通过特定的方法才能访问内部代码逻辑,也就是将类中的属性私有化(通过使用private关键字来修饰,让属性只能在本类中被访问,然后在提供几个public修饰的公用方法供外部访问)。

2.访问权限

  Java提供了4种访问权限:
    1)Private:私有的,只有本类内部可见
    2)default:默认,同包可见
    3)Protected:受保护的,非继承,同包可见;继承的情况下,子类可见,同包可见
    4)Public :共有的,任何地方都可见

     java-面向对象的三大特征--封装_访问权限

3.实现封装

  封装的形式之一Getter/Setter:
    getter方法:为外部访问提供查询操作
    setter方法:为外部访问提供赋值操作
    尽可能多的隐藏代码内容
    使用private访问修饰符来隐藏要封装所有属性 

package org.example;

/**
 * 封装
 * 1.定义属性私有化
 * 2.设置公共方法供外部访问
 */
public class Student {
    private String name; //名字私有化
    private int age;//年龄私有化

    /*
     *给私有化的name设置getter方法
     */
    public String getName() {
        return name;
    }

    /*
     *给私有化的name设置setter方法
     */
    public void setName(String name) {
        this.name = name;
    }

    /*
     *给私有化的age设置getter方法
     */
    public int getAge() {
        return age;
    }

    /*
     *给私有化的age设置getter方法
     */
    public void setAge(int age) {
        if (age <= 0){
            System.out.println("年龄不合法。。。。");
        }
        this.age = age;
    }

    public void introduce(){
        System.out.println("大家好!我叫"+name+",我今年"+age+"岁!");
    }
}

 

package org.example;

public class Exceple1 {
    public static void main(String[] args) {
        //实例化对象并赋值给Student类型的变量stu
        Student stu = new Student();
        stu.setName("小红"); //通过公开的方法设置姓名
        stu.setAge(-10);//通过公开的方法设置年龄
        stu.setAge(18);
        stu.introduce();//调用公开方法
    }
}

属性私有化后,只能通过提供的公开方法访问到属性,这就是面向对象的封装特性。

运行结果:

java-面向对象的三大特征--封装_赋值_02