为什么我们不能声明私有外部类?如果我们可以拥有内部私人阶级,那么为什么我们不能拥有外部私人阶级......?
答案 0 :(得分:20)
答案 1 :(得分:10)
回答你的问题:
如果我们可以拥有内部私人课程那么为什么我们不能拥有外部私人课程 私人班......?
您可以,区别在于内部类处于“类”访问级别,而“外部”类处于“包”访问级别。来自Oracle Tutorials:
如果一个类没有修饰符(默认值,也称为包私有),它只在其自己的包中可见(包是相关类的命名组 - 您将在后面的课程中了解它们。)< / p>
因此,package-private(声明没有修饰符)是你声称“外部”类私有的效果,语法就是不同。
答案 2 :(得分:8)
private
修饰符将使您的课程无法从外部访问,因此没有任何优势,我认为这就是为什么它是非法的,只有public
,abstract
&amp; ;允许final
。
注意:即使你不能成功protected
。
答案 3 :(得分:4)
你可以。
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
}
答案 4 :(得分:2)
您不能拥有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
。因此,如果您不想使用“闭包”,请使用静态内部类。
答案 5 :(得分:0)
private使类只能被声明它的类访问。如果我们将整个类设为私有,那么来自外部的任何人都无法访问该类并使其无用。
内部类可以被设置为私有,因为外部类可以访问内部类,如果你将外部类设为私有则不是这样。