Java 如果使用导入而不是相同的包,则会发生更改
今天我写了一个考试,有一个问题,如果我们写Java 如果使用导入而不是相同的包,则会发生更改,java,import,package,Java,Import,Package,今天我写了一个考试,有一个问题,如果我们写import countries.*,哪些代码行行不通而不是包装国家在TestCountry类中。以下是两个类: package countries; public class Country { private String name; private int population; boolean isEuropean; public double area; protected Country[] neig
import countries.*,哪些代码行行不通代码>而不是包装国家代码>在TestCountry
类中。以下是两个类:
package countries;
public class Country {
private String name;
private int population;
boolean isEuropean;
public double area;
protected Country[] neighbors;
protected boolean inEurope() {
return this.isEuropean;
}
private void updatePopulation(int newBorns) {
this.population += newBorns;
}
public String toString() {
String str ="";
for (int i=0; i<this.neighbors.length; i++){
str += neighbors[i].name+"\n";
}
return str;
}
Countries[] getNeighbors() {
return this.neighbors;
}
String getName() {
return this.name;
}
}
当然,我尝试了一下,发现以下几行不再有效(如果我们对包装国家进行注释;
并编写进口国家。*;
):
有人能给我解释一下为什么它们不起作用,以及什么是进口国。*代码>确实如此吗 由于您没有设置String getName()
,getneighbories()
方法的作用域(在可以访问的地方),因此它们具有默认的包作用域,即它们可以在同一个包中使用。变量isEuropean
也是如此。因此,您不能在另一个包中使用它们。
但是,由于您的测试类
正在扩展国家
类,您的国家
类的所有受保护的
成员都可以访问
访问级别
+---------------+-------+---------+----------+-------+
| modifiers | class | package | subclass | world |
+---------------+-------+---------+----------+-------+
| Public | Y | Y | Y | Y |
+---------------+-------+---------+----------+-------+
| Protected | Y | Y | Y | N |
+-----------------------+---------+----------+-------+
| Private | Y | N | N | N |
+---------------+-------+---------+----------+-------+
| No Modifiers | Y | Y | N | N |
+---------------+-------+---------+----------+-------+
如果没有修饰符,isEuropean
,getName()
具有默认作用域,也称为包作用域。您的测试不再与类位于同一个包中,因此它只能访问public
和protected
成员(受保护,因为它是Country
的子类。请参见以下内容:
System.out.println(isEuropean);
System.out.println(getNeighbors());
System.out.println(getName());
+---------------+-------+---------+----------+-------+
| modifiers | class | package | subclass | world |
+---------------+-------+---------+----------+-------+
| Public | Y | Y | Y | Y |
+---------------+-------+---------+----------+-------+
| Protected | Y | Y | Y | N |
+-----------------------+---------+----------+-------+
| Private | Y | N | N | N |
+---------------+-------+---------+----------+-------+
| No Modifiers | Y | Y | N | N |
+---------------+-------+---------+----------+-------+
System.out.println(getNeighbors());