1.默认是有好的。这意味着当前包内的其他所有类都能访问"友好的"成员,但对包外的所有类来说,这些成员却是"私有的",外界不得访问。
2.变成一个"友好"成员,方法是舍弃所有访问指示符,并将其类置于相同的包内。这样一来,其他类就可以访问成员。
3.如果不将一个"."作为classpath的一部分使用,java就不会考虑当前的目录。
4.
package c05.dessert;
public class Cookie {
public Cookie() {
System.out.println("Cookie constructor!");
}
void _foo() {
System.out.println("foo");
}
}
import c05.dessert.*;
public class Dinner() {
public Dinner() {
System.out.println("Dinner constructor");
}
public static void main(String[] args) {
Cookie c = new Cookie();
x._foo(); //can't access
}
}
foo()成员不可在Dinner.java内访问,因为foo()只有在dessert包内才是友好的。
5.private关键字意味着除非那个特定的类,而且从那个类的方法里,否则没有人能够访问那个成员。同一个包内的其他成员不能访问private成员。
class Sundate {
private Sundate() {
}
static Sundate makeASundate() {
return new Sundate();
}
}
public class IceCream {
public static void main(String[] args) {
Sundate x = Sundate.makeASundate();
}
}
由于默认构建器是唯一获得定义的,而且它的属性是private,所以可以防止对这个类的继承。
6.若新建一个包,并从另一包内的某个类里继承,则唯一能够访问的成员就是原来那个包的public成员。当然,如果在相同的包里进行继承,那么继承获得的包能够访问所有"友好"的成员。
7.如果不针对类的访问设置一个访问指示符,那么它会自动默认为友好的。这意味着那个类的对象可由包内的其他类创建,但不能由包外创建。