繁体   English   中英

为什么类或接口不能接收私有或受保护的访问修饰符?

[英]Why can't a class or an interface receive private or protected access modifiers?

我正在阅读一些Java文本,文本说我们只能为类和接口应用publicdefault访问修饰符。 因此,如果我们声明:它是一个编译错误:

private class A {}

要么

protected class A{}

我只是好奇为什么类或接口无法接收privateprotected访问修饰符?

private意思是“只在封闭的阶级中可见”。

protected表示“仅在封闭类和任何子类中可见,并且也在封闭类的包中的任何位置”。

因此, private ,在应用于顶级课程时没有意义; protected的定义的第一部分也是如此。 protected的第二部分可以应用,但它由默认(包受保护)修饰符覆盖,因此protected的部分无意义且部分冗余。

privateprotected都可以(并经常)应用于嵌套类和接口,而不是顶级类和接口。

顶级类只能具有public访问权限或default访问权限,但内部类可以具有private access

public class TestClassAccess
{
    public static void main(String[] args)
    {
        new TestClassAccess().new TestClassPrivateAccess();
    }

    private class TestClassPrivateAccess
    {
        TestClassPrivateAccess()
        {
            System.out.println("I'm a private class");
        }
    }
}

顶层只有两个用于类可见性的用例(a)在任何地方都可见(b)仅在包内可见。 因此只有两个修饰符( public和默认)。 如果class是public ,那么所有类都可以看到它。 如果没有访问修饰符,则仅对同一包中的类可见。

如果在顶层有更多用于类可见性的用例,Java语言将提供更多修饰符。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM