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中成员方法与成员变量访问权限详解,希望大家喜欢。