java访问权限的修饰符:private 、protected、public和默认,作用是限定其他类对该类、属性和方法的使用权限。只有public和默认可以修饰类
private修饰的变量和方法,只能在本类中访问,但是可以对private属性提供get,set方法,子类可以访问父类的get,set方法
public修饰的类,属性,方法,在任何地方都可以访问
protected修饰的属性,方法,可以在本类,同一个包的类(包括子类),不同包的子类中访问.
不加修饰符即默认修饰的类,方法,属性只能在本类,和同一个包中的类(包括子类)访问,不能在不同包的子类中访问
默认不加修饰符的类和属性,方法只能在本类或者同一个包的类中访问
类ProtectedTest
package com.chen.day5;
public class ProtectedTest {
protected int age;
String name;
public String color;
protected void test1() {
System.out.println("test1");
}
void test2() {
System.out.println("test2");
}
public void test3() {
System.out.println("test3");
}
}
不同包下的类Test1和Test2
package com.chen.day6;
import com.chen.day5.ProtectedTest;
public class Test1 extends ProtectedTest{
//不同包的子类下的访问权限
public void test4(){
test1();//protected修饰的方法,在不同包的子类中可以访问
//test2();默认修饰的方法,在不同包的子类中不能访问
test3();//public修饰,可以访问
System.out.println(age);//protected修饰的属性,在不同包的子类中可以访问
//但是在不同包的非子类中不能访问
//System.out.println(super.name);//默认修饰的属性,在不同包的子类中不能访问
System.out.println(color);//public修饰的属性,可以访问
}
}
class Test2{
//不同包的类中的访问权限
public static void main(String[] args) {
ProtectedTest p=new ProtectedTest();
//p.age=10;
//p.name="Li";
p.color="blue";//只有public修饰的属性和方法才能在任意地方访问
//p.test1();
//p.test2();
p.test3();
}
}
out:
test3