java类的访问权限控制和封装

类存在一个边界,边界之内的细节隐藏起来,只留下对外的接口(如:笔记本、手机、饮水机)

为什么使用封装:(1)易用,简单(2)提高数据安全性(3)实现对属性的访问权限控制,增加程序的易维护性。

 

面向对象封装的体现:

四种权限的访问修饰符对实体的修饰

 

private

默认

protected

public

类(外部类)

N

Y

N

Y

方法

Y

Y

Y

Y

属性

Y

Y

Y

Y

 

四种访问权限修饰符的作用范围

在类上的权限修饰符我们一般都定义成public的,方法大多数时public的(使用一些设计模式可能会使用protected或private),属性绝大多数都是private

将属性私有化,使用private关键字完成属性私有化,如果在其他类中直接访问一个带有private的属性时报错,private修饰的属性只能在本类中访问

 

方法的访问控制(四种访问权限):

java类的访问权限控制和封装_第1张图片

 

java类的访问权限控制和封装_第2张图片

先通过public的对外公开的set方法来设置私有的属性值

再通过public的对外公开的get方法来获得私有的属性值

 

封装的要领,是站在用户的角度去思考怎么去描述一个类,它应该有什么属性和行为,而不是去考虑如何实现。

也就是外部分为两种:子类和非子类,对于子类而言,protected等同于public,而对于非子类protected又等同于private。

比如在Employee类中,如果name是私有的,那么这个访问就是被拒绝的,而如果是保护的则可以。

public void print() {
    super.print();
    System.out.println(name);
    System.out.println(salary);
}

即使是保护的成员,对于非子类的外部访问也是拒绝的,比如在测试类中就是不可以。

public class Test {
    public static void main(String[] args) {
        Person p = new Person("3320078427849803","zhang","男");
        Employee e = new Employee("413739879472078","wang","女",3600);
        p.print();
        e.print();
        System.out.println(e.name);
    }
}

 

你可能感兴趣的:(java类的访问权限控制和封装)