为什么在删除java中的访问修饰符后代码仍在运行?

时间:2016-03-27 20:06:04

标签: java

我们的讲师昨天向我们展示了这段代码。我不明白为什么他写了额外的访问修饰符。当我删除代码的某些部分时,它仍在运行。

public class Counter {
private final String name;
private int count;

public Counter(String id) {
    name = id;
    count = 0;
}

public void increment() {
    count += 1;
}

public int tally() {
    return count;
}

public String toString() {
    return count + " " + name;
}

public static void main(String[] args) {
    Counter c0 = new Counter("first");
    Counter c1 = new Counter("second");

    c0.increment();
    c0.increment();
    c1.increment();

    System.out.println("c0 counter is " + c0);
    System.out.println("c1 counter is " + c1);
}

然后我删除了访问修饰符和;

   public static void main(String[] args) {
    Counter c0 = new Counter("first");
    Counter c1 = new Counter("second");

    c0.increment();
    c0.increment();
    c1.increment();

    System.out.println("c0 counter is " + c0);
    System.out.println("c1 counter is " + c1);
}

代码仍在运行。其实我不是很擅长,所以基本上可以说出来吗?

4 个答案:

答案 0 :(得分:2)

访问修饰符控制类可以访问它们的外部。该类本身可以访问所有内容。

答案 1 :(得分:1)

通过删除类或变量上的访问修饰符,您允许Java使用默认值:仅对类进行包访问,对接口使用public。

由于您的main位于同一个类中,因此它仍具有访问权限,因此所有内容仍然可以成功运行。

了解更多信息:

  

Java提供了许多访问修饰符来设置类,变量,方法和构造函数的访问级别。四个访问级别是:

     

包装可见。默认。不需要修饰符。

     

仅对班级(私人)可见。

     

向世界展示(公众)。

     

对包和所有子类(受保护的)可见。

答案 2 :(得分:0)

如果您不使用访问修饰符,则同一包中的每个类都可以访问该方法或属性。我猜你的main()在同一个包中,这就是它的工作原理。

答案 3 :(得分:-1)

Java中有四种访问修饰符:public,private,protected和package private。如果没有明确指定,默认情况下可见性是包私有。