- package birdpack;
- public class Bird {
- protected int nFeathers;
- }
- package duckpack;
- import birdpack.Bird;
- public class Duck1 extends Bird {
- public void setn(int duck1n) {
- nFeathers = duck1n;
- }
- }
- package duckpack;
- import birdpack.Bird;
- public class Duck2 extends Bird {
- public void constructor(int newDuck2) {
- Duck2 d2 = new Duck2();
- //在子类中通过子类的对象访问父类中的protected变量
- d2.nFeathers = newDuck2;
- }
- }
- package duckpack;
- import birdpack.Bird;
- public class Duck3 extends Bird {
- public void constructor(int newDuck3) {
- Bird b = new Bird();
- //子类中用父类对象反而不能访问父类中的protected变量
- //b.nFeathers = newDuck3;
- }
- }
- package duckpack;
- import birdpack.Bird;
- public class Swan extends Bird {
- public void constructor(int swan) {
- Duck1 d1 = new Duck1();
- //子类中用另外一个子类的对象也不能访问父类中的protected变量
- //d1.nFeathers = swan;
- }
- }
-------------------------------------------------------------------------------------------------------------------------------
转载这篇文章,主要是为了说明,虽然在java中,父类中protected权限的成员变量可以被子类访问,但是还是有条件的,具体如下:
1.在子类中直接使用父类的protected变量是可以的,父类的protected权限的成员变量可以被子类继承
2.在子类中通过子类的对象访问父类的protected成员是可以的
3.在子类中使用父类的对象访问父类的protected成员反而是不行的
4.在子类中使用其他子类的对象访问父类的protected成员也是不行的