JAVA 的四种访问权限

在Java编程中,访问权限是非常重要的概念,因为它可以保证代码的安全性和封装性。访问权限有四种,分别是public、protected、default和private。


private:如果一个类的方法或者变量被private修饰,那么这个类的方法或者变量只能在该类本身中被访问,在类外以及其他类中都不能显示地进行访问。

default默认访问权限):如果一个类的方法或变量被包访问权限修饰,也就意味着只能在同一个包中的其他类中显示地调用该类的方法或者变量,在不同包中的类中不能显示地调用该类的方法或变量。

protected:如果一个类的方法或者变量被protected修饰,对于同一个包的类,这个类的方法或变量是可以被访问的。对于不同包的类,只有继承于该类的类才可以访问到该类的方法或者变量。

public:被public修饰的方法或者变量,在任何地方都是可见的。

private

java 复制代码
package com.ymqx.访问权限;

public class Person {
    private String name = "test";

    public String getName(){
        //只能在本类中被访问
        System.out.println(this.name);
        return this.name;
    }
}
java 复制代码
package com.ymqx.访问权限;

public class Test {
    public static void main(String[] args){
        Person person = new Person();

        //Person类外不能直接访问
        //System.out.println(person.a);
        person.getName();
    }
}

输出:test

方法或者变量被private修饰,只能在本类中被访问。

default

java 复制代码
package com.ymqx.访问权限;

public class Person {
    String name = "test";

    public String getName(){
        System.out.println(this.name);
        return this.name;
    }
}
java 复制代码
package com.ymqx.访问权限;

public class Test {
    public static void main(String[] args){
        Person person = new Person();

        //同一个包中的其他类中显示地调用
        System.out.println(person.name);
        person.getName();
    }
}

输出:
test
test

同一个包中的其他类中显示地调用。

java 复制代码
package com.ymqx.访问权限2;

import com.ymqx.访问权限.Person;

public class Test{
    public static void main(String[] args){
        Person person = new Person();

        //不同的包,Person类不能显示地调用name
        System.out.println(person.name);
        person.getName();
    }
}

不同包中的类中不能显示地调用。

protected

java 复制代码
package com.ymqx.访问权限;

public class Person {
    protected String name = "test";

    public String getName(){
        System.out.println(this.name);
        return this.name;
    }
}
java 复制代码
package com.ymqx.访问权限2;

import com.ymqx.访问权限.Person;

public class Zi extends Person {
    public void getPersonName() {
        //不同的包,继承可以访问父类protected修饰变量
        System.out.println(super.name);
    }
}

不同包的类,只有继承于该类的类才可以访问到该类 protected 修饰方法或者变量。

public

java 复制代码
package com.ymqx.访问权限;

public class Person {
    public String name = "test";

    public String getName(){
        System.out.println(this.name);
        return this.name;
    }
}
java 复制代码
package com.ymqx.访问权限2;

import com.ymqx.访问权限.Person;

public class Test{
    public static void main(String[] args){
        Person person = new Person();

        //同一个包中的其他类中显示地调用
        System.out.println(person.name);
        person.getName();
    }
}

输出:
test
test

不同包中的类也可以显示地调用。

小结

  • 四种访问权限从小到大:private < default(默认访问权限)< protected < public。
  • 当定义变量时不加任何修饰会默认为默认权限。
  • 在子类中访问父类中的变量时需要用super。
相关推荐
sevevty-seven8 分钟前
Spring Boot 自动装配原理详解
java·spring boot·后端
Forget the Dream1 小时前
设计模式之迭代器模式
java·c++·设计模式·迭代器模式
大丈夫在世当日食一鲲1 小时前
Java中用到的设计模式
java·开发语言·设计模式
A-Kamen2 小时前
Spring Boot拦截器(Interceptor)与过滤器(Filter)深度解析:区别、实现与实战指南
java·spring boot·后端
练川2 小时前
Stream特性(踩坑):惰性执行、不修改原始数据源
java·stream
狂奔小菜鸡2 小时前
Java运行时数据区
java·jvm·后端
trymoLiu2 小时前
SpringBoot 实现 RSA+AES 自动接口解密!
java·spring boot
ChinaRainbowSea2 小时前
MySQL 索引的数据结构(详细说明)
java·数据结构·数据库·后端·mysql
33三 三like2 小时前
软件工程画图题
java·开发语言·软件工程
去看全世界的云3 小时前
【Kotlin】Kotlin基础笔记
android·java·笔记·kotlin