私人类声明
可能重复:
Java:为什么我们可以将顶级类定义为私有?
为什么我们不能宣布私人外部阶级? 如果我们可以拥有内部私人课程那么为什么我们不能拥有外部私人课程……?
私有外部类将没用,因为没有东西可以访问它。
查看更多详情:
Java:为什么我们可以将顶级类定义为私有?
回答你的问题:
如果我们可以拥有内部私人课程那么为什么我们不能拥有外部私人课程……?
您可以,区别在于内部类处于“类”访问级别,而“外部”类处于“包”访问级别。 来自Oracle教程 :
如果一个类没有修饰符(默认,也称为包私有),它只在自己的包中可见(包是相关类的命名组 – 您将在后面的课程中了解它们。)
因此,package-private(声明没有修饰符)是你声称“外部”类私有的效果,语法就是不同的。
private
修饰符将使你的课程无法从外部进入,所以没有任何优势,我认为这就是为什么它是非法的,只允许public
, abstract
和final
。
注意:即使你不能protected
它。
您可以。
package test; public class Test { public static void main(String[] args) { B b = new B(); } } class B { // Essentially package-private - cannot be accessed anywhere else but inside the `test` package }
你不能拥有private
课程,但你可以拥有second
堂课:
public class App14692708 { public static void main(String[] args) { PC pc = new PC(); System.out.println(pc); } } class PC { @Override public String toString() { return "I am PC instance " + super.toString(); } }
还要记住static
内部类与单独的类无法区分,除了它的名称是OuterClass.InnerClass
。 因此,如果您不想使用“闭包”,请使用静态内部类。
private使类只能被声明它的类访问。 如果我们将整个类设为私有,那么来自外部的任何人都无法访问该类并使其无用。
内部类可以是私有的,因为外部类可以访问内部类,如果你将外部类设为私有则不是这样。