Java中成员方法与成员变量访问权限详解
记得在一次面试的笔试题中,有的面试官会要求写出具体的像pullic这些访问限定符的作用域。其实,平常我都没去系统的考虑这些访问限定符的作用域,特别是包内包外的情况,OK,笔试不行了。
这是java基本的知识,也是公司看重的,那没办法啦,我的脑袋记不住东西,那我只能把这些东西写下来方便自己温故知新,不废话了,贴代码了。
代码如下:
packagecom.jaovo; /** *_1_成员变量访问权限的求证 *publicprivateprotecteddefault(默认的权限) *自己包自己类可访问可访问可访问可访问 *自己包别的类可访问不可访问可访问可访问 *别的包别的类可访问不可访问不可访问不可访问 *自己包别的类有继承关系可访问不可访问可访问可访问 *别的包别的类有继承关系可访问不可访问可访问不可访问 *--------------------------------------------------------------------------- *_2_成员方法访问权限的求证 *publicprivateprotecteddefault(默认的权限) *自己包自己类可访问可访问可访问可访问 *自己包别的类可访问不可访问可访问可访问 *别的包别的类可访问不可访问不可访问不可访问 *自己包别的类有继承关系可访问不可访问可访问可访问 *别的包别的类有继承关系可访问不可访问可访问不可访问 */ importcn.jaovo.D; importcn.jaovo.E; //publicclassChengyuan{ //publicclassChengyuanextendsC{ //publicclassChengyuanextendsD{ publicclassChengyuanextendsE{ publicstaticvoidmain(String[]args){ //一成员变量的权限访问 /*1Bb=newB();//自己包别的类 System.out.println(b.i1); System.out.println(b.i2); System.out.println(b.i3);//i3可以在B中访问private System.out.println(b.i4); */ /*2Chengyuanch=newChengyuan();//自己包自己类 System.out.println(ch.i1); System.out.println(ch.i2); System.out.println(ch.i3); System.out.println(ch.i4); */ /*3Dd=newD();//别的包别的类 System.out.println(d.i1); System.out.println(d.i2);//i2在D中不是公共的;无法从外部程序包中对其进行访问 System.out.println(d.i3);//i3可以在D中访问private System.out.println(d.i4);//i4可以在D中访问protected */ /*4Chengyuanch=newChengyuan();//自己包别的类有继承关系ChengyuanextendsC System.out.println(ch.i1); System.out.println(ch.i2); System.out.println(ch.i3);//i3可以在B中访问 System.out.println(ch.i4); */ /*5Chengyuanch=newChengyuan();//别的包别的类有继承关系ChengyuanextendsD System.out.println(ch.i1); System.out.println(ch.i2);//i2在D中不是公共的;无法从外部程序包中对其进行访问 System.out.println(ch.i3);//i3可以在D中访问private System.out.println(ch.i4); */ //====================================================== //二成员方法的访问权限 /*1Chengyuanch=newChengyuan();//自己包自己类 System.out.println(ch.m1()); System.out.println(ch.m2()); System.out.println(ch.m3()); System.out.println(ch.m4()); */ /*2Bb=newB();//自己包别的类 System.out.println(b.m1()); System.out.println(b.m2()); System.out.println(b.m3());//m3()可以在B中访问private System.out.println(b.m4()); */ /*3Ee=newE();//别的包别的类 System.out.println(e.m1()); System.out.println(e.m2());//m2在E中不是公共的;无法从外部程序包中对其进行访问 System.out.println(e.m3());//m3可以在E中访问private System.out.println(e.m4());//m4()可以在E中访问protected */ /*4Cc=newC();//自己包别的类有继承关系ChengyuanextendsC System.out.println(c.m1()); System.out.println(c.m2()); System.out.println(c.m3());//m3()可以在C中访问 System.out.println(c.m4()); */ //5 Chengyuanch=newChengyuan(); System.out.println(ch.m1()); System.out.println(ch.m2());//找不到符号 System.out.println(ch.m3());//找不到符号 System.out.println(ch.m4()); } } classB{ //1成员变量 publicinti1=100; inti2=200; privateinti3=300; protectedinti4=400; //2成员方法 publicintm1(){return1;} intm2(){return1;} privateintm3(){return1;} protectedintm4(){return1;} } classC{ //1成员变量 publicinti1=100; inti2=200; privateinti3=300; protectedinti4=400; //2成员方法 publicintm1(){return1;} intm2(){return1;} privateintm3(){return1;} protectedintm4(){return1;} } //======================================================== //D.class文件和E.class文件在cn包内,为了方便把他们放到这里 packagecn.jaovo; publicclassD{ //1成员变量 publicinti1=100; inti2=200; privateinti3=300; protectedinti4=400; //2成员方法 publicintm1(){return1;} intm2(){return1;} privateintm3(){return1;} protectedintm4(){return1;} } //------- packagecn.jaovo; publicclassE{ //1成员变量 publicinti1=100; inti2=200; privateinti3=300; protectedinti4=400; //2成员方法 publicintm1(){return1;} intm2(){return1;} privateintm3(){return1;} protectedintm4(){return1;} }
以上代码是Java中成员方法与成员变量访问权限详解,希望大家喜欢。