Лучшим способом сделать это было бы сделать поля суперкласса 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
.