В школе мне нужно изучать Java, и, поскольку я привык к языкам на основе C ++ (например, Cocoa / Objective-C), я очень разочарован в Java.
Я сделал суперкласс(это также можно использовать в качестве базового класса):
public class CellView {
public CellViewHelper helper; // CellViewHelper is just an example
public CellView() {
this.helper = new CellViewHelper();
this.helper.someVariable = <anything>;
System.out.println("CellView_constructor");
}
public void draw() {
System.out.println("CellView_draw");
}
public void needsRedraw() {
this.draw();
}
}
public class ImageCellView extends CellView {
public Image someImage;
public ImageCellView() {
super();
this.someImage = new Image();
System.out.println("ImageCellView_constructor");
}
public void setSomeParam() {
this.needsRedraw(); // cannot be replaced by this.draw(); since it's some more complicated.
}
@Override public void draw() {
super.draw();
System.out.println("ImageCellView_draw");
}
}
Теперь, когда я называю это так:
ImageCellView imageCellView = new ImageCellView();
imageCellView.setSomeParam();
Я получаю это:
CellView_constructor
ImageCellView_constructor
CellView_draw
Однако я хочу, чтобы оно было:
CellView_constructor
ImageCellView_constructor
CellView_draw
ImageCellView_draw
Как я могу это сделать?
Заранее спасибо,
Тим
РЕДАКТИРОВАТЬ:
Я также реализовал этот метод для CellView:
public void needsRedraw() {
this.draw();
}
И это для ImageCellView:
public void setSomeParam() {
this.needsRedraw(); // cannot be replaced by this.draw(); since it's some more complicated.
}
ИЯ звонил так:
ImageCellView imageCellView = new ImageCellView();
imageCellView.setSomeParam();
Это вызывает проблему (когда я вызываю функцию из супер, она вызывает только супер )?Как я могу решить это ... (без необходимости переопределять / переопределять метод needsRedraw () в каждом подклассе?)