[img]http://dl.iteye.com/upload/attachment/257062/3fe4fcb0-1e06-3638-a711-01a091a8276d.jpg[/img]
[size=medium]下面开始测试:
一个Test类,作为被访问的类,private就不说了,只有它自己才能访问,public是都能访问,这里主要来区分friendly和protected
新建两个类,Test1和Test2去访问Test,Test1和Test在同一个包中,Test2在其他包中[/size]
[img]http://dl.iteye.com/upload/attachment/257066/68a6f5f9-6df0-3171-805b-2be30c72b1c8.jpg[/img]
Test
Test1
Test2
[color=red][size=medium]我觉得迷惑人的一点就是:不同的包中,对于protected的方法,你可以继承它,但是你不能访问它!其他的参考上面那个图就ok了[/size][/color]
[size=medium]下面开始测试:
一个Test类,作为被访问的类,private就不说了,只有它自己才能访问,public是都能访问,这里主要来区分friendly和protected
新建两个类,Test1和Test2去访问Test,Test1和Test在同一个包中,Test2在其他包中[/size]
[img]http://dl.iteye.com/upload/attachment/257066/68a6f5f9-6df0-3171-805b-2be30c72b1c8.jpg[/img]
Test
package pp;
public class Test {
private void privateMethod(){}
void friendMethod(){}
protected void protectedMethod(){}
public void publicMethod(){}
}
Test1
package pp;
public class Test1 extends Test {
public static void main(String[] args) {
//同一包中,可以访问friendly,protected,public
new Test().friendMethod();
new Test().protectedMethod();
new Test().publicMethod();
}
//可以继承friendly,protected,public
@Override
void friendMethod() {
// TODO Auto-generated method stub
super.friendMethod();
}
@Override
protected void protectedMethod() {
// TODO Auto-generated method stub
super.protectedMethod();
}
@Override
public void publicMethod() {
// TODO Auto-generated method stub
super.publicMethod();
}
}
Test2
package qq;
import pp.Test;
public class Test2 extends Test {
public static void main(String[] args) {
//不同包中只能访问public,注意了!不同的包中,对于protected的方法,你可以继承它,但是你不能访问它!
new Test().publicMethod();
}
//不同包中,可以继承protected,public
@Override
protected void protectedMethod() {
// TODO Auto-generated method stub
super.protectedMethod();
}
@Override
public void publicMethod() {
// TODO Auto-generated method stub
super.publicMethod();
}
}
[color=red][size=medium]我觉得迷惑人的一点就是:不同的包中,对于protected的方法,你可以继承它,但是你不能访问它!其他的参考上面那个图就ok了[/size][/color]