java的问题,给搞晕啦!

来源:百度知道 编辑:UC知道 时间:2024/06/05 15:48:31
class A{
public int a1=5;
public int a2=4;
protected int a3=3;
int a4=2;
int geta4(){
return a4;
}
}
class B extends A{

int b1=1;
int sum(){
return b1+a1+a2+a3+a4;

}
}
public class Exam3_14{
public static void main(String args[]){
A a=new A();
B b=new B();
int sumA = a.a1+a.a2+a.a3+a.a4;
int sumB = sumA+b.b1;
System.out.println("A:="+sumA);
System.out.println("B:"+sumB+",B:"+b.sum());
}
}
如果按书上说的,a4为默认类型,只能在本类中被访问,不能在其子类中访问,只能通过成员方法来获取a4的值,那为什么在其子类B中,语句 return b1+a1+a2+a3+a4;不会报错呢?结果也是正确的.

呵呵,貌似很久不用,偶Java语法基本全忘喽。。。。

不过貌似这个问题还能回答一下滴,default在一个包里面都可以访问的,想限制到类要用private。private=>default=>protected=>public权限是越来越广的。

你记错了 默认的是包访问权限,也就是在整个文件夹都能够访问他,要想控制,你需要这样写private int a4=2;则继承它的class B就不能对它进行访问,编译报错!