package ch3;
import ch3.MyClass1;
public class Test {
public void func(){
MyClass1 obj1 = new MyClass1();
// 公共属性,任何地方都可以访问
System.out.println(obj1.a);
// Error,b为私有属性,类外无法访问
System.out.println(obj1.b);
// c是受保护属性,同包的类可以访问
System.out.println(obj1.c);
// d是缺省属性,同包的类可以访问
System.out.println(obj1.d);
// func1()是公共方法,任何地方都可以访问
obj1.func1();
// Error,func2()为私有方法,类外无法访问
obj1.func2();
// func3()是受保护方法,同一包中的类可以访问,其他包中的子类也可以访问
obj1.func3();
// func4()是缺省方法,同一包中的类可以访问
obj1.func4();
// 同一包中的缺省类可以访问
MyClass2 obj2 = new MyClass2();
}
}
//假如将Test类放在与MyClass1和MyClass2不同包下,
//在Test中访问MyClass1、MyClass2及其成员
package ch3;
import ch3.MyClass1;
// Error,不能导入不同包中的缺省类
import ch3.MyClass2;
public class Test {
public void func(){
MyClass1 obj1 = new MyClass1();
// 公共属性,任何地方都可以访问
System.out.println(obj1.a);
// Error,b为私有属性,类外无法访问
System.out.println(obj1.b);
// Error,c是受保护属性,不同包中的非子类不能访问
System.out.println(obj1.c);
// Error,d是缺省属性,不同包中的类不能访问
System.out.println(obj1.d);
// func1()是公共方法,任何地方都可以访问
obj1.func1();
// Error,func2()为私有方法,类外无法访问
obj1.func2();
// Error,func3()是受保护方法,不同包中的类不能访问
obj1.func3();
// Error,func4()是缺省方法,不同包中的类不能访问
obj1.func4();
// 同一包中的缺省类可以访问
MyClass2 obj2 = new MyClass2();
}
}
//在引入继承的情形下,假如将Test类放在与MyClass1和MyClass2不同包下,
//在Test中访问MyClass1、MyClass2及其成员的可行性
package ch3;
import ch3.MyClass1;
// Error,不能导入不同包中的非公共类
import ch3.MyClass2;
public class Test extends MyClass1 {
public void func(){
// 公共属性,任何地方都可以访问
System.out.println(a);
// Error,b为私有属性,类外无法访问
System.out.println(b);
// c是受保护属性,子类可以访问
System.out.println(c);
// Error,d是缺省属性,不同包中的类不能访问
System.out.println(d);
// func1()是公共方法,任何地方都可以访问
func1();
// Error,func2()为私有方法,类外无法访问
func2();
// func3()是受保护方法,子类可以访问
func3();
// Error,func4()是缺省方法,不同包中的类不能访问
func4();
// Error,不可以访问不同包中的缺省类
MyClass2 obj2 = new MyClass2();
}
}
// 上述代码中Test类是MyClass1的子类