private
修饰符将使你的类无法从外部访问,所以这不会有任何好处,我认为这就是为什么它是非法的,并且只允许public
,abstract
和final
。
注意:即使你也做不到
protected
。
回答你的问题:
如果我们可以有内部私有类那么为什么我们不能有外部类 私人课...?
可以,区别在于内部类处于“类”访问级别,而“外部”类处于“包”访问级别。来自 Oracle 教程:
如果一个类没有修饰符(默认值,也称为 package-private),则它仅在其自己的包中可见(包是相关类的命名组 - 您将在后面的课程中了解它们。)
因此,package-private(不声明修饰符)就是您期望将“外部”类声明为私有的效果,只是语法不同。
你可以。
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 使得该类只能被声明它的类访问。如果我们将整个类设为私有,那么外部的任何人都无法访问该类,从而使其变得毫无用处。
内部类可以设为私有,因为外部类可以访问内部类,而如果将外部类设为私有则情况并非如此。