private:同一类可见,变量和方法
default:同一包可见,变量和方法,类,接口
protected:同一包内的类和所有子类(包括不同包的子类)可见,变量和方法
public:所有可见,变量和方法,类和接口
package Encapsulation1; public class Person { //测试private private String name;//变量不能在子类中使用 private String name; private void story() { System.out.println("person is tell story"); } //测试default String sex; void drink() { System.out.println("person is drinking"); } //测试protected protected double weight; protected void work() { System.out.println("person is working"); } public int age; public void learn() { System.out.println("person is learning"); } public static void main(String[] args) { System.out.println("person class"); Person p=new Person(); //测试private,变量和方法可以在当前类中调用 p.name="personQiao"; p.story(); //测试default,变量和方法可以在当前类中调用 p.sex="male"; p.drink(); //测试protected,变量和方法可以在当前类中调用 p.weight=98.7; p.work(); p.age=30; p.learn(); // } }
package Encapsulation1; public class Student extends Person { public int grade; public void book() { System.out.println(" student is watching book"); } public static void main(String[] args) { System.out.println("person class"); Student s=new Student(); //测试private,变量和方法不能在同一包子类中调用 //s.name="qiao"; //s.story(); //测试default,变量和方法可以在同一包子类中调用 s.sex="male"; s.drink(); //测试protected,变量和方法可以在同一包子类中调用 s.weight=100.5; s.work(); //s.age=20; //s.learn(); } }
package Encapsulation2; import Encapsulation1.Person; public class Teacher extends Person { public static void main(String[] args) { System.out.println("teacher class"); Teacher t=new Teacher(); //private 在不同包不可以调用 //t.name="qiao"; //t.story(); //default在不同包中不可以调用 //t.sex="male"; //t.drink(); //protected在不同包中子类可以调用 t.weight=100.5; t.work(); t.age=20; t.learn(); } }
package Encapsulation1; import Encapsulation1.Person; public class Aniaml { private String name; public String habit; public void eat() { System.out.println(name+" is eating"); } public static void main(String[] args) { System.out.println("animal class"); Person p=new Person(); //测试private,在同一包可以调用 //p.name="personQiao"; //p.story(); //测试default,在同一包可以调用 p.sex="male"; p.drink(); //测试protected,在同一包可以调用 p.weight=20.7; p.work(); //p.age=130; //p.learn(); } }
package Encapsulation2; import Encapsulation1.Person; public class Car { public static void main(String[] args) { System.out.println("person class"); Person p=new Person(); //测试private,变量和方法可以在不同包不通过类不可以 //p.name="personQiao"; //p.story(); //测试default,变量和方法可以在在不同包不通过类不可以 //p.sex="male"; //p.drink(); //测试protected,变量和方法可以在在不同包不通过类不可以 //p.weight=98.7; //p.work(); p.age=30; p.learn(); } }