访问修饰符的权限
java中四种访问修饰符的权限,1表示可访问,0表示不可访问
public,可在同一项目中调用
protected,可以在同包中或不同包的子类中调用
缺省,可以在同包中调用(子类或非子类)
private,仅可在本类中调用
package csl0312;
public class Superclass {
public int pub;
protected int pro;
int non;
private int pri;
public void test() {
System.out.print("123");
System.out.print(pub);
System.out.print(pro);
System.out.print(non);
System.out.print(pri);
}
}
本类中四种修饰符都提供访问权限
package csl0312;
public class AClass extends Superclass {
public int a;
protected int b;
int c;
private int d;
public void printinfo(){
System.out.print(pub);//子类可以调用public、protected、缺省
System.out.print(pro);
System.out.print(non);
//System.out.print(pri);//非本类不可调用private
}
public void test() {
System.out.print("456");
}
public static void main(String[] args) {
Superclass ac=new AClass();
ac.test();
//ac.printinfo();//方法重写,不能调用子类独有的方法
//ac.printinfo();//本类中皆可调用
}
}
同包子类中可以调用父类中除private以外的
package csl0312_1;
import csl0312.Superclass;
import csl0312.AClass;
public class BClass extends Superclass {
public void printinfo(){
System.out.print(pub);
System.out.print(pro);
//System.out.print(non);//不同包不可调用缺省和private的属性
//System.out.print(pri);
}
}
不同包的子类不可调用缺省和private
package csl0312_1;
public class eclass {
public void printinfo(BClass bc){
System.out.print(bc.pub);
//System.out.print(bc.pro);
//System.out.print(bc.non);
//System.out.print(bc.pri);
}
}
不同包且非子类,仅可调用public修饰的属性和方法