私有类声明[重复]

问题描述 投票:0回答:6

可能重复:
Java:为什么我们可以将顶级类定义为私有?

为什么我们不能声明一个 private 外部类?如果我们可以有内部私有类那么为什么我们不能有外部私有类......?

java class private
6个回答
26
投票

私有外部类将毫无用处,因为没有任何东西可以访问它。

查看更多详情:

为什么我们不能将顶级类定义为私有?


14
投票

private
修饰符将使你的类无法从外部访问,所以这不会有任何好处,我认为这就是为什么它是非法的,并且只允许
public
abstract
final

注意:即使你也做不到

protected


12
投票

回答你的问题:

如果我们可以有内部私有类那么为什么我们不能有外部类 私人课...?

可以,区别在于内部类处于“类”访问级别,而“外部”类处于“包”访问级别。来自 Oracle 教程

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

因此,package-private(不声明修饰符)就是您期望将“外部”类声明为私有的效果,只是语法不同。


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
}

1
投票

你不能上

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
。因此,如果您不想使用“闭包”,请使用静态内部类。


0
投票

private 使得该类只能被声明它的类访问。如果我们将整个类设为私有,那么外部的任何人都无法访问该类,从而使其变得毫无用处。

内部类可以设为私有,因为外部类可以访问内部类,而如果将外部类设为私有则情况并非如此。

© www.soinside.com 2019 - 2024. All rights reserved.