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。
相关推荐
码云数智-园园10 小时前
C++20 Modules 模块详解
java·开发语言·spring
程序员黑豆10 小时前
JDK 下载安装与配置详细教程
java·前端·ai编程
小宇宙Zz10 小时前
Maven依赖冲突
java·服务器·maven
swordbob10 小时前
NIO的channel中什么是 fd(File Descriptor,文件描述符)
java·开发语言·nio
咖啡八杯11 小时前
GoF设计模式——享元模式
java·spring·设计模式·享元模式
十五喵源码网11 小时前
基于springboot2+vue2的租房管理系统
java·毕业设计·springboot·论文笔记
摇滚侠11 小时前
IDEA 创建 Java 项目 手动整合 SSM 框架
java·ide·intellij-idea
源分享11 小时前
Java线程同步的多种实现方法(非常详细)
java·开发语言·jvm
Flittly11 小时前
【AgentScope Java新手村系列】(10)实战-多Agent天气助手
java·spring boot·spring
李少兄11 小时前
从原理到实战:Spring IoC/DI 核心知识体系与高频面试题全解
java·后端·spring