您的位置:首页 > 编程语言 > Java开发

java什么时候使用private public protect static

2012-05-26 14:28 357 查看
一.Java访问权限饰词(accessspecifiers)

Java有public、protect、friendly、private四种访问权限,并且这四访问权限的访问范围越来越小。

1.friendly

1)果一个class内的数据成员或方法没有任何权限饰词,那么它的缺省访问权限就是friendly。同一个package内的其它所有classes都可以访问friendly成员,但对package以外的classes则形同private。

2)对于同一个文件夹下的、没有用package的classes,Java会自动将这些classes初见为隶属于该目录的defaultpackage,可以相互调用class中的friendly成员。如以下两个class分别在同一个文件夹的两个文件中,虽然没有引入package,但隶属于相同的defaultpackage。

classSundae{
//以下两个方法缺省为friendly
Sundae(){}
Voidf(){System.out.println(“Sundae.f()”);
}
publicclassIceCream{
publicstaticvoidmain(String[]args){
Sundaex=newSundae();
x.f();
}
}
2.public:可以被任何class调用

3.private:private成员只能在成员所属的class内被调用,如:

classSundae{
privateSundae(){}//只能在Sundaeclass中被调用
Sundae(inti){}
staticSundaemakASundae(){
returnnewSundae();
}
}
publicclassIceCream{
publicstaticvoidmain(String[]args){
//Sundaeclass中构造函数Sundae()是private,
//所以不能用它进行初始化
//Sundaex=newSundae();
Sundaey=newSundae(1);//Sundae(int)是friendly,可以在此调用
Sundaez=Sundae.makASundae();
}
}
4.protected:具有friendly访问权限的同时,又能被subclass(当然包括子孙类,即子类的子类)所访问。即,既能被同一package中的classes访问,又能被protected成员所在class的subclass访问。

二.Class的访问权限

1.Class同样具有public、protect、friendly、private四种访问访问权限:

1)public:在任何地方都可被使用

2)protect、private:除了它自己,没有任何class可以使用,所以class不能是

protected或private(innerclass除外)

3)friendly:同一个package中的classes能用

2.如何调用构造函数被声明为private的class

1)用static函数

2)用Singteton模式

classSoup{
privateSoup(){}
//(1)静态函数方法
publicstaticSoupmakeSout(){
returnnewSoup();
}
//(2)The"Singleton"pattern:

privatestaticSoupps1=newSoup();
publicstaticSoupaccess(){
returnps1;
}
publicvoidf(Stringmsg){
System.out.println("f("+msg+")");
}
}
publicclassLunch{
publicstaticvoidmain(String[]args){
//Souppriv1=newSoup();编译错误
Souppriv2=Soup.makeSout();
Souppriv3=Soup.access();
priv2.f("priv2");
priv3.f("priv3");
}


文章来源:http://zhidao.baidu.com/question/126069870.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: