更好的方法是创建超类的字段protected
而不是private
- 这将使您可以在子类中访问它们。
请注意,当您定义子类构造函数时,您还需要从超类调用构造函数,因此在这方面您仍然可以传递所有必需的变量。
并且不要忘记,超类中的所有公共方法都可以被具有子类实例的任何代码原样调用。
编辑:一个小例子可能会有所帮助:
public class DefaultTableModel
{
protected String modelName;
protected int numberOfTables;
private numTimesReinited = 0;
public DefaultTableModel(String name, int numTabs)
{
modelName = name;
numberOfTables = numTabs;
}
public void reinit()
{
numTimesReinited++;
// Other stuff
}
protected int getNumberOfReinits()
{
return numTimesReinited;
}
public String getName()
{
return name;
}
}
public class MyTableModel extends DefaultTableModel
{
private String modelType;
public MyTableModel(String name, int numTables, String modelType)
{
super(name, numTables); // sets up the fields in the superclass
this.modelType = modelType;
}
// purely "local" code
public void getModelType()
{
return modelType;
}
// Accesses several protected data to provide new (public) functionality
public void addTable()
{
if (getNumberOfReinits() < 10)
{
numberOfTables++;
reinit();
}
}
}
如果我误解了您的要求,请告诉我,但听起来您想访问超类的字段和行为 - 只要它们不是,您就可以在子类中自动访问它们private
。