Java 中的默认访问修饰符是什么?

2022-08-31 07:40:43

如果我没有显式声明方法或实例变量的默认访问修饰符是什么?

例如:

package flight.booking;

public class FlightLog
{
    private SpecificFlight flight;

    FlightLog(SpecificFlight flight)
    {
        this.flight = flight;
    }
}

此构造函数的访问修饰符是受保护的还是包?同一包(即 )中的其他类是否可以调用此构造函数?flight.booking


答案 1

来自 Java 文档

如果一个类没有修饰符(默认值,也称为包私有),则它仅在其自己的包中可见(包是命名的相关类组 - 您将在后面的课程中了解它们)。

在 中,您还可以使用公共修饰符或(包私有),就像使用顶级类一样,并且具有相同的含义。member levelno modifier

你可以在这里阅读完整的故事(我最近写的):

http://codeinventions.blogspot.com/2014/09/default-access-modifier-in-java-or-no.html


答案 2

从文档中:

Access Levels
Modifier        Class    Package    Subclass    World
-----------------------------------------------------
public           Y        Y          Y           Y
protected        Y        Y          Y           N
(Default)        Y        Y          N           N
private          Y        N          N           N

推荐