例解public protected default private访问权限问题

来源:互联网 发布:evutec手机壳知乎 编辑:程序博客网 时间:2024/05/29 07:46

作用域 当前类 同一package 子孙类 其他package 

public       √          √           √            √ 

protected √         √            √            × 

friendly     √         √            ×            × 

private     √         ×            ×             × 

不写时默认为friendly 



请看下面内容:
package com.test2;

import com.test1.father;



public class child extends father{
public void getmmm(){
super.say(); -----可以调用的。。ok
father abc=new father();
abc.say(); //
}

public static void main(String a[]){
new child().say();
}
}

package com.test1;

public class father {

protected void say(){
System.out.println("father---protected!!!!!");
}
public static void main(String kk[]){
new father().say();
}
}




在com.fzq.study1包中父类:package com.fzq.study1;public class A { public int intPublic; int intFriendly; protected int intProtected; private int intPrivate; static public int intPublicStactic; static int intFriendlyStactic; static protected int intProtectedStactic; static private int intPrivateStactic;public A() {}/**  * @param args  */ public static void main(String[] args) { } public void fucPublic(){} void fucFriendly(){} protected void fucProtected(){} private void fucPrivate(){}public static void fucPublicStatic(){} static void fucFriendlyStatic(){} protected static void fucProtectedStatic(){} private static void fucPprivateStatic(){}}在com.fzq.study2包中的子类:package com.fzq.study2;import com.fzq.study1.*;public class E extends A{ public E() {  super.intProtected = 3;  super.intPublic = 6;  super.intProtectedStactic = 7;  super.intPublicStactic = 9;  super.fucProtected();  super.fucPublic();  super.fucProtectedStatic();  super.fucPublicStatic(); }/**  * @param args  */ public static void main(String[] args) {  A a = new A();  a.intPublic = 4;  //a.intProtected = 6; 不可以这样写,会编译报错  a.intProtectedStactic = 4;可以这样写,不会报错  a.intPublicStactic = 5;  a.fucPublic();  a.fucProtectedStatic();  a.fucPublicStatic();E e = new E();  e.intProtected = 5;  e.intPublic = 6;  e.intProtectedStactic = 6;  e.intPublicStactic = 7;  e.fucProtected();  e.fucPublic();  e.fucProtectedStatic();  e.fucPublicStatic(); }}我想问的问题是:在上述包结构下,为什么在子类E的main()方法中父类对象a不能访问它的protected属性intProtected。
0 0
原创粉丝点击