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

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

public       √          √           √            √ 

protected √         √            √            × 

friendly     √         √            ×            × 

private     √         ×            ×             × 

不写时默认为friendly 



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

imp ort 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。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值