Java访问权限修饰符详解

Java中的访问权限修饰符(Java关键字)

今天很皮的发现,自己现在竟然不会玩儿Java基础了,就翻看了一下自己的笔记,写一篇文章复习一下!

测试环境:Java运行环境,myEclipse。

测试前准备:实体类包(Student类,Teacher类),测试类包(TestPublic类,TestProtected类,TestPrivate类)。

    首先让我们想想这四种修饰符:public,protected,default(也有叫frendly的,不过两个都通不过编译,不写就是这个修饰符了),private。

测试开始

    修饰类时:当访问权限修饰符修饰类的时候,只能使用默认的修饰符和public修饰符,在不适用public的时候在不同的包中不可以访问到这个类,在Java这种面向对象编程的语言来说,应该将类设置成public的类,使用了public修饰的类可以导入到任何的类中,而不修饰的类只能在本包中使用。
       没有修饰的类Teacher类:
Java访问权限修饰符详解_第1张图片
    相同的包下,可以任意使用:
Java访问权限修饰符详解_第2张图片
    不同的包,访问不到:
Java访问权限修饰符详解_第3张图片

    修饰其它时:当访问权限修饰符修饰成员方法和成员变量的时候,这四种修饰符代表了四种访问权限,我们可以开始测试。
    1:首先建立实体包和一个测试包,我们在这个entity包中写一个Student类,其中写入八个元素,为了测试的方便,我们可以都将其用static进行修饰,四个变量和四个方法分别用不同的修饰符修饰。
    Java访问权限修饰符详解_第4张图片
    2:在测试包中写TestPublic测试类,可以看到通过类名调用的成员变量和成员方法只有public修饰符修饰的通过了编译。

Java访问权限修饰符详解_第5张图片

    3:在测试包中写TestProtected测试类并继承自Student类,可以看到通过类名调用的成员变量和成员方法使用public和protected修饰符修饰的通过了编译。
Java访问权限修饰符详解_第6张图片
    4:在实体包中写TestDefault测试类并继承自Student类,可以看到通过类名调用的成员变量和成员方法只有private修饰符修饰的没有通过编译。
Java访问权限修饰符详解_第7张图片

    5:回到Student实体类中,会发现使用private修饰的成员方法和成员变量被黄线抬起来了,鼠标悬浮上去,成员变量提示要么删除这个变量,要么提供getter和setter方法,要么加上注解表示这个成员变量不使用。而成员方法是不可能有getter和setter方法的,这些说明了什么,说明了private的访问范围。
Java访问权限修饰符详解_第8张图片
    总结如下:
        1:public修饰的变量或者方法在不同包中,相同包中,子类中,当前类中都是可以直接访问的。
        2:protected修饰的变量或者方法在相同包中,子类中当前类中都是可以直接访问的,在不同包中的类则不能访问。
        3:default(也就是默认的) 的变量或者方法在相同包中当前类中都是可以直接访问的,在不同包中,即便是子类中也不能访问。
        4:private 修饰的变量或者方法只能在当前类中都是直接访问,在不同类中就不能访问,只能提供向外的公开的方法去调用,也就是面向对象的封装(这里暂时不提面向对象)。
    关系图如下:
作用域
当前类
同一包
子孙类
其它包
public
protected

default(friendly)


private



你可能感兴趣的:(Java关键字)