Java访问修饰符
1.Friendly
定义变量时未加任何修饰符关键字默认为friendly,同一个package内的其他所有classes都可以访问friendly成员,对package外的classes形同private。
Cookie.java
//test.Cookie.java
public class Cookie(){
public Cookie(){
System.out.println("Cookie constructor");
}
//friendly
void bite(){
System.out.println("bite");
}
protected void eat(){
System.out.println("eat");
}
}
Dinner.java
//othertest.Dinner.java
public class Dinner{
public Dinner(){}
public static void main(String[] args){
Cookie cookie=new Cookie();
//! cookie.bite();
}
}
2.public
public成员任何class皆可访问。
3.default
同一目录下的两个class可以互相访问对方的friendly成员,Java自动将文件视为在目录下的default package中,因此对同目录下的其他文件来说,都是friendly。
// test.Cake.java
class Cake{
public static void main(String[] args){
Pie x=new Pie();
x.f();
}
}
//test.Pie.java
class Pie{
void f(){
System.out.println("f");
}
}
4.private
除了自身class,其他class都不可访问,确保同一package其他地方不会误用。通常情况下,为了不暴露底层的细目,所有的数据成员都应设置为private。
class School{
private String aera;
private String name;
private School school;
private School(String aera,String name){
this.aera=aera;
this.name=name;
}
public void setaera(String aera){
this.aera=aera;
}
public void setname(String name){
this.name=name;
}
public static void getInstance(){
if(school==null){
school=new School("四川成都","郫县男子职业技术学院");
}
return school;
}
}
public class test{
public static void main(String[] args){
//!! School school=new School("四川成都","郫县男子职业技术学院");
School school = School.getInstance();
}
}
5.protected
protected用来处理"继承"关系,允许继承于父类的其他package的派生类调用父类中的protected成员。
Chocolatechip.java
//othertest.Chocolatechip.java
public class Chocolatechip extends Cookie {
public Chocolatechip(){}
public static void main(String[] args){
Chocolateship x=new Chocolateship();
//! x.bite();
x.eat();
}
}
点击阅览Cookie.java ctrl+左键点击跳转