访问修饰符
权限有大到小分为四种:
private:只在本类中使用。
public修饰:在哪都可以用。public属于最大权限。
默认权限:只能在本包中使用。
protectd:受保护:本包中的类与其他包中的子类可以访问。
例子1:
//A.java
package cn.itcast.a;
public class A{
private String a;
int i = 1;
}
|
//B.java
package cn.itcast.a;
public class B{
//B中不可以使用a。因为a是私有的。
//可以调用A类的属性i。i是默认的,可以在本包内使用。
}
|
例子2:
//A.java
package cn.itcast.a;
public class A{
private String a;
int i = 1;
}
|
//B.java
package cn.itcast.b;
public class B{
//B中不可以使用a。因为a是私有的。
//可以不可以调用A类的属性i。i是默认的,可以在本包内使用。
}
|
//C.java
package cn.itcast.b;
import cn.itcast.a.*; //导入包
public class C extends A{ //可以继承的其他包中的类。
//不可以使用A类的属性a。因为a是私有的。
//不可以调用A类的属性i。i是默认的,可以在本包内使用。
//受保护成员只能在子类的里面才能用。
}
|
例子3:受保护的方法只能在子类的里面才能调用。
//A.java
package cn.itcast.a;
public class A{
protected void abc(){
System.out.println("abc...");
}
}
|
//B.java
package cn.itcast.b;
public class B{
public void show(){
new A.abc(); //正确。本包内可以使用。
}
}
|
//C.java
package cn.itcast.b;
import cn.itcast.a.*;
public class C extends A{
public void show(){
//new A.abc(); //受保护权限不能这样调用。
abc(); //只能在子类的里面才能调用父类的受保护成员。
}
}
|
//Test.java
package cn.itcast.b;
public class Test{
public static void main(String[] args){
//new B().abc(); //受保护权限,不能使用子类对象调用。
}
}
|