小弟试着写教材上一个模板类的继承,遇到奇怪的错误继承类无法访问基类的protected变量;小弟在网上搜索无果,求各位大牛前辈指点,真心感谢
问题叙述:eclipse 报错显示继承类ActorList中extendArray()函数中继承自基类(ListUseArrray)的mySize无法访问 (cannot be resolved to a variable) 小弟实在困惑为什么protected变量在继承类中午访问,真心求前辈指点。非常感谢!!!基类ListUseArray.java 如下:
package eclipsePackage;public abstract class ListUseArray < DataType > {
protected final static int myINITIAL_SIZE = 1;
protected int myCount;
public int mySize;
protected DataType [] myList; public ListUseArray() {
myList = (DataType[])new Object[myINITIAL_SIZE];
mySize = myINITIAL_SIZE;
myCount = 0;
}
protected abstract void extendArray() throws ActorsAndMoviesException;
public int getCurrentSize() {
return myCount;
}
public DataType getItemAtIndex(int inIndex) {
return myList[inIndex];
}
public void addItem(DataType inItem) throws ActorsAndMoviesException {
if (myCount == mySize) {
extendArray();
myList[myCount++] = inItem;
}
}
public abstract String toString();
}继承类 ActorList.java 如下 :
package eclipsePackage;
import eclipsePackage.ListUseArray;// 这个public class ActorList <DataType extends ListUseArray<DataType> >类声明小弟
//摘抄自网上不懂其中含义,不知写的对不对
public class ActorList <DataType extends ListUseArray<DataType> > {
private final static int myMAX_SIZE = 20;

public ActorList() {
super();
}
protected void extendArray() throws ActorsAndMoviesException {
                // eclipse报错mySize cannot be resolved to a variable
                //不过此变量是protected的呀,小弟真心不懂
if (mySize * 2 <= myMAX_SIZE) {
int i = 0;
}
}

public String toString() {
                // eclipse报错mySize cannot be resolved to a variable
mySize = 0;
return "abc";
}
}那个无关痛痒的Exception类(ActorsAndMoviesException.java 如下) :
package eclipsePackage;public class ActorsAndMoviesException extends Exception{

private String myDescrip;

public ActorsAndMoviesException(String inDescrip) {
myDescrip = inDescrip;
}
public String toString() {
return "ActorAndMoviesException: " + myDescrip;
}
}eclipse 报错显示继承类ActorList中extendArray()函数中继承自基类(ListUseArrray)的mySize无法访问 (cannot be resolved to a variable) 小弟实在困惑为什么protected变量在继承类中午访问,真心求前辈指点。非常感谢!!!

解决方案 »

  1.   

    protected 标记的东西是不能被子类继承和访问的
    cannot be resolved to a variable是不能被当做变量的意思
      

  2.   

    说错了,protected标记的东西其子类可以继承,单不可以访问其父类的,只能调用自己的。
      

  3.   

    请问重写是什么意思,另外就我这个extendArray()方法,存在什么错误导致无法继承protected的变量那?
      

  4.   


    你第二个类的继承写错了public class ActorList <DataType extends ListUseArray<DataType> > 
    改为public class ActorList <DataType> extends ListUseArray<DataType>没有见过你所写的继承,所以继承不存在就没那个继承属性了。。
      

  5.   

    方法重写就是子类覆盖父类同名方法,重写的特点为方法名与父类相同,参数的个数与数据类型一一对应。
    具体参考API文档:例子:
    class Human
    {
       public void say(int age)
       {
          System.out.println("I am a human.I am "+age);
       }
    }class Man extends Human
    {
      public void say(int age)  //重写父类方法say(int age)
       {
          System.out.println("I am a man.I am "+age);
       }
    }