Java类方法访问权限

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java类方法访问权限相关的知识,希望对你有一定的参考价值。

1.权限解析

Java有四种访问权限, 其中三种有访问权限修饰符,分别为private,public和protected,还有一种不带任何修饰符。

private: Java语言中对访问权限限制的最窄的修饰符,一般称之为“私有的”。被其修饰的类、属性以及方法只能被该类的对象访问,其子类不能访问,更不能允许跨包访问。

  1. default:即不加任何访问修饰符,通常称为“默认访问模式“。该模式下,只允许在同一个包中进行访问。
  2. protect: 介于public 和 private 之间的一种访问修饰符,一般称之为“保护形”。被其修饰的类、属性以及方法只能被类本身的方法及子类访问,即使子类在不同的包中也可以访问。
  3. public: Java语言中访问限制最宽的修饰符,一般称之为“公共的”。被其修饰的类、属性以及方法不仅可以跨类访问,而且允许跨包(package)访问。
下面用表格的形式来展示四种访问权限之间的异同点,这样会更加形象。表格如下所示:
 
 

同一个类

同一个包

不同包的子类

不同包的非子类

Private

     

Default

   

Protected

 

Public

2.代码应用
 
创建一个Spoon类:
技术分享
package com.samsung.wx;

public class Spoon {

    private static void printArrayPrivate(String... args){
        for(String obj: args){
            System.out.print(obj.toString());
        }
        System.out.println();
    }
     
    public static void printArrayPublic(String... args){
        for(String obj: args){
            System.out.print(obj.toString());
        }
        System.out.println();
    }
        
    protected static void printArrayProtect(String... args){
        for(String obj: args){
            System.out.print(obj.toString());
        }
        System.out.println();
    }
    
    static void printArrayDefault(String... args){
        for(String obj: args){
            System.out.print(obj.toString());
        }
        System.out.println();
    }
}
View Code

在另一个包中调用Spoon的方法,只有public方法可以被调用:

技术分享
package com.samsung.wx2;

import com.samsung.wx.Spoon;


public class Test {
    
    public static void main(String[] args) {

        Spoon.printArrayPublic("public");
        
    }
}
View Code

创建一个类SubSpoon继承Spoon(和Spoon在不同包中), 可以在SubSpoon中调用Spoon的protect方法:

技术分享
package com.samsung.wx2;

import com.samsung.wx.Spoon;

public class SubSpoon extends Spoon{
        
    public SubSpoon()
    {
        Spoon.printArrayProtect("protect");
    }

}
View Code

 

以上是关于Java类方法访问权限的主要内容,如果未能解决你的问题,请参考以下文章

在同个类中non-const插入const来减少重复

Java类方法访问权限

java中的四种访问权限是?

jni调用 java和c是同个线程吗

什么是Java类的访问权限?

Java - 如何使 ArrayList 访问不同的类方法?