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。
相关推荐
PAC_3Dame3 分钟前
记一次真实的线上OOM
java
SunnyDays101122 分钟前
如何在Java中将Word文档转换为图像(JPEG、PNG或SVG)
java
Lumos_77739 分钟前
Linux -- 线程
java·jvm·算法
知兀1 小时前
【MybatisPlus】后端用枚举类,数据库用tinyint,存在枚举类型转换
java
StockTV1 小时前
印度股票实时数据 NSE和BSE的实时行情、K 线及指数数据
java·开发语言·spring boot·python
User_芊芊君子1 小时前
【OpenAI 把 AI 玩明白了】:自主推理 + 动态知识图谱,这 4 个技术突破要颠覆行业
java·人工智能·知识图谱
c++之路1 小时前
C++20概述
java·开发语言·c++20
Championship.23.242 小时前
Linux Top 命令族深度解析与实战指南
java·linux·服务器·top·linux调试
橘子海全栈攻城狮2 小时前
【最新源码】养老院系统管理A013
java·spring boot·后端·web安全·微信小程序
逻辑驱动的ken2 小时前
Java高频面试考点18
java·开发语言·数据库·算法·面试·职场和发展·哈希算法