一、访问权限:
二、示例代码:
父类:People.java
package com.wbf.test;
public class People {
public void eat(){
System.out.println("People-->public void eat()");
}
protected void run(){
System.out.println("People-->protected void run()");
}
void say(){
System.out.println("People-->default void say()");
}
private void study(){
System.out.println("People-->private void study()");
}
}
同包,子类:Student.java
package com.wbf.test;
/**
* 同包,子类
* public-->eat()
* protected-->run()
* default-->say()
* private-->study()
*/
public class Student extends People {
public void test(){
Student s = new Student();
s.eat();
s.run();
s.say();
//s.study();
//******************************
People p = new People();
p.eat();
p.run();
p.say();
//p.study();
}
}
同包,非子类:Programmer.java
package com.wbf.test;
/**
* 同包,非子类
* public-->eat()
* protected-->run()
* default-->say()
* private-->study()
*/
public class Programmer {
public void test(){
People p = new People();
p.eat();
p.run();
p.say();
//p.study();
}
}
不同包,子类:Teacher.java
package com.wbf.test1;
import com.wbf.test.People;
/**
* 不同包,子类
* public-->eat()
* protected-->run()
* default-->say()
* private-->study()
*/
public class Teacher extends People {
public void test(){
Teacher t = new Teacher();
t.eat();
t.run();
//t.say();
//t.study();
People p = new People();
p.eat();
super.run();//p.run();
//p.say();
//p.study();
}
}
不同包,子类:Worker.java
package com.wbf.test1;
import com.wbf.test.People;
/**
* 不同包,子类
* public-->eat()
* protected-->run()
* default-->say()
* private-->study()
*/
public class Worker extends People {
public void test(){
Worker w = new Worker();
w.eat();
w.run();
//w.say();
//w.study();
Teacher t = new Teacher();
t.eat();
//t.run();
//t.say();
//t.study();
People p = new People();
p.eat();
super.run();//p.run();
//p.say();
//p.study();
}
}
不同包,非子类:Driver.java
package com.wbf.test2;
import com.wbf.test.People;
/**
* 不同包,非子类
* public-->eat()
* protected-->run()
* default-->say()
* private-->study()
*/
public class Driver {
public void test(){
People p = new People();
p.eat();
//p.run();
//p.say();
//p.study();
}
}
二、解释说明:
1).public:表示属性或方法是公开的,任何其他类中都可以访问
2).protected:表示本包可以访问、子类可以继承。某类的protected属性或方法在该类所在的包之外是无法通过该类的实例化对象进行访问的。其子类所访问的是子类从父类继承下来的protected属性或方法,不是父类本身的。
3).default:表示本包可以访问、子类可以继承。某类的protected属性或方法在该类所在的包之外是无法通过该类的实例化对象进行访问的。其子类也不能够访问从父类继承下来的protected属性或方法,这是protected和default的区别所在。
4).private:表示属性或方法是私有的,只有自身可以访问