复习一下,总结一下。
如下类PublicClass
/**
* 公共类,在所有包中可见
* @author OOS
*
*/
public class PublicClass {
/**
* 公共域,所有子类中可见
*/
public int publicNum;
/**
* 私有域,当前类可见
*/
private int privateNum;
/**
* 保护域,所有子类中可见
*/
protected int protectedNum;
/**
* 默认域,当前包的子类中可见
*/
int defaultNum;
/**
* 公共方法
* 可使用:所有类
* 可继承:所有子类
*/
public void publicMethod(){};
/**
* 私有方法
* 可使用:当前类
* 可继承:无
*/
private void privateMethod(){};
/**
* 保护方法
* 可使用:当前包
* 可继承:所有子类
*/
protected void protectedMethod(){};
/**
* 默认方法
* 可使用:当前包
* 可继承:当前包的子类
*/
void defaultMethod(){};
/**
* 私有类,仅在定义它的类中可见
* @author OOS
*
*/
private class PrivateClass{
}
/**
* 保护类,仅在当前包、当前类和所以子类中可见
* @author OOS
*
*/
protected class ProtectedClass{
protected ProtectedClass()
{
}
}
/**
* 默认类,仅在当前包中可见
* @author OOS
*
*/
class DefaultClass {
}
}
public class CurrentPackageTest extends PublicClass{
public static void main(String[] args)
{
PublicClass pc = new PublicClass();
//当前包可以使用保护方法和默认方法
pc.protectedMethod();
pc.defaultMethod();
//保护类在当前包可见
PublicClass.ProtectedClass protectedClass = new PublicClass().new ProtectedClass();
//默认类在当前包可见
DefaultClass defaultClass = new PublicClass().new DefaultClass();
}
public CurrentPackageTest()
{
System.out.println(super.publicNum);
System.out.println(super.protectedNum);
//PublicClass和当前类同属于一个包,所以defaultNum可继承
System.out.println(super.defaultNum);
}
}
与PublicClass不同一个包中的测试类OtherPackageTest,如下:
public class OtherPackageTest extends PublicClass{
public static void main(String[] args)
{
PublicClass pc = new PublicClass();
//PublicClass与当前类不属于同一个包,仅能使用公共方法
pc.publicMethod();
}
public OtherPackageTest()
{
System.out.println(super.publicNum);
System.out.println(super.protectedNum);
}
}