我们的讲师昨天向我们展示了这段代码。我不明白为什么他写了额外的访问修饰符。当我删除代码的某些部分时,它仍在运行。
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);
}
代码仍在运行。其实我不是很擅长,所以基本上可以说出来吗?
答案 0 :(得分:2)
访问修饰符控制类可以访问它们的外部。该类本身可以访问所有内容。
答案 1 :(得分:1)
通过删除类或变量上的访问修饰符,您允许Java使用默认值:仅对类进行包访问,对接口使用public。
由于您的main位于同一个类中,因此它仍具有访问权限,因此所有内容仍然可以成功运行。
了解更多信息:
Java提供了许多访问修饰符来设置类,变量,方法和构造函数的访问级别。四个访问级别是:
包装可见。默认。不需要修饰符。
仅对班级(私人)可见。
向世界展示(公众)。
对包和所有子类(受保护的)可见。
答案 2 :(得分:0)
如果您不使用访问修饰符,则同一包中的每个类都可以访问该方法或属性。我猜你的main()在同一个包中,这就是它的工作原理。
答案 3 :(得分:-1)
Java中有四种访问修饰符:public,private,protected和package private。如果没有明确指定,默认情况下可见性是包私有。