这篇文章给大家分享的是有关java面向对象中有几种权限的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。
Private:
类中的所有private方法和private成员变量只能在类中访问而不能在其他类中访问。
例如:
package Main;
public class Private {
private int a;
private int b;
Protected (){
this.a=1;
this.b=2;
//a和b只能在Private类中调用
}
private void set(){
System.out.println(""+a+""+b+"\n");
}
void Print(){
this.set();
//只能在这里用;
}
}
友好型和protected:
如果在另一个类中声明其他的一个类,如果这两个在一个包中那么另一个类能访问这个其他类的友好型变量不同包不能访问:
如果在另一个B类中声明其他的一个类A,如果这两个在一个包中那么另一个类B也能能访问这个其他类A的protected变量(或方法),如果不在一个包,那么如果类A有一个父类C如果,如果父类C中有一个protected变量(或方法),只要B,C在一个包中,B就能使用A中从父类继承的protected方法。如果A是B的子类,如果AB不在一个包中,那么A可以使用B中protected方法。
例如:
package Main;
import Protected.*;
public class Main {
public static void main(String args[]){
Protected jkl=new Protected();
jkl.Print();
//调用jkl父类的protect方法
Frindly prot =new Frindly();
System.out.println(prot.a);
//在Main类中调用友好型的变量
prot.set();
//在Main类中调用友好型的方法
}
}
package Main;
public class Frindly {
int a,b,c,d;
Frindly(){
a=b=c=d=1;
}
void set (){
System.out.print(""+a+" "+b+"\n");
}
}
package Main;
public class Protectedfather{
protected int a;
private int b;
protected Protectedfather (){
this.a=1;
this.b=2;
//a和b只能在Protected中调用
}
private void set(){
System.out.println(""+a+""+b+"\n");
}
protected void Print(){
this.set();
//只能在这里用;
}
}
package Protected;
import Main.*;
public class Protected extends Protectedfather{
public Protected(){
super();
//在另一个包中调用里父类中的protect构造方法
super.a=12;
//调用父类的protect变量
}
}
Public:
如果类中的方法或者变量是public,那么就可以在别的类中调用,没有限制(用在夸包)。A带掉用别的包中的B类
package Main;
import Public.*;
public class Main {
public static void main(String args[]){
int a;
Public p=new Public();
//调用public类中的public方法
a=p.a;
//调用Public类中的public变量
p.set();
}
}
package Public;
public class Public {
public int a=12;
public void set (){
System.out.println("OK\n");
}
}
总结表格::
| 同包 | 不同包 | |||
子类 | 非子类 | 子类 | 非子类 | ||
Private | 是 | 否 | 否 | 否 | 否 |
友好型 | 是 | 是 | 是 | 否 | 否 |
Protected | 是 | 是 | 是 | 是 | 否 |
Public | 是 | 是 | 是 | 是 | 是 |
感谢各位的阅读!关于“java面向对象中有几种权限”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。