下方代码位于initialization包内
package initialization;
class Art {
Art() { System.out.println("Art constructor"); }
public static void Art(Object obj){
System.out.println(obj);
}
void bite(){
System.out.println("bite");
}
}
class Drawing extends Art {
Drawing() { System.out.println("Drawing constructor"); }
}
public class Cartoon extends Drawing {
// public Cartoon() { System.out.println("Cartoon constructor"); }
public static void main(String[] args) {
Cartoon x = new Cartoon();
}
}
下方代码位于holding包内,若不导入initialization包,则需将绝对路径写出
package holding;
import java.util.*;
public class lterator{
public static void main(String[] args) {
initialization.Cartoon MSS=new initialization.Cartoon();
}
}
(1)若导入initialization包,则可以写成如下形式:
package holding;
import java.util.*;
//import initialization.*;这种形式也可以,表示导入initialization目录下的文件,若initialization目录下有多个文件需要导入,则可以这样表示。
import initialization.Cartoon;
public class lterator{
public static void main(String[] args) {
// initialization.Cartoon MSS=new initialization.Cartoon();
Cartoon mss=new Cartoon();
mms.bite();
}
}
private
(2)下面展示了private的功能,除了包含该成员的类之外,其它任何类都无法访问这个成员
class Sundae{
private Sundae(){
System.out.println("创建对象成功");
}
static Sundae makeSundae(){
return new Sundae();
}
void bite(){
System.out.println("bite");
}
}
public class IceCream {
public static void main(String[] args) {
//Sundae x=new Sundae(); //会报错,因为该构造器是private
Sundae x=Sundae.makeSundae();
x.bite();
}
}
不同
在(1)中mms.bite()会报错,因为其不在一个包内,需要在bite()前加访问权限public
在(2)中x.bite()不会报错,并且在同一个包类的其它类访问该方法都可以,因为它们拥有包访问权限
protected
在Cookie类中,由于faker前面有protected,在其它包中若想访问,则必须继承(或者将protected改为public,但是这样就会有很多类可以访问),否则会报错
package Access;
public class Cookie {
public Cookie(){
System.out.println("Cookie constructor");
}
protected void faker(){
System.out.println("faker");
}
}
----------
package initialization;
import Access.Cookie;
public class Chocolate extends Cookie {
public Chocolate(){
System.out.println("Chocolate");
}
public void chomp(){
faker();
}
public static void main(String[] args) {
Chocolate x=new Chocolate();
x.chomp();
}
}
类的访问权限
1)每个文件都只能有一个public,表示每个编译单元都有单一的公共接口,用public表现。
2)public类的名称必须完全与含有该编译单元文件名相匹配