Я выбрал этот заголовок, потому что заметил, что я сделал что-то не так с имплантацией абстрактного класса, но пока не совсем уверен.Java: возможно неправильный абстрактный класс impletaion
Я создал абстрактный класс MoveAble для тренировочных целей и создал из него класс Ball. Также я создал метод GetPosition() только для класса moveAble и использовал его из класса ball. Но когда я вызвал GetPosition() на любом шаровом объекте, вместо этого я получил переменную положения объекта Moveable Abstract.
Я предполагаю, что это так, но из моего понимания мы все равно не можем использовать абстрактный класс, поэтому мне нужно получить значение позиции дочернего класса, даже если бы я реализовал этот метод только по классу родителей.
Примечание: Я начинающий программист на Java. вероятно, лучший способ сделать то, что я сделал, но это то, с чем я вышел. Я хотел бы услышать, что вы, ребята, думаете об этом, A, если вы считаете, что это все криво, и есть лучший способ для всего этого, я буду рад узнать его.
Подвижный класс:
public abstract class MoveAble {
private int[] position = new int[2];
private int[] velocity = { 1, 1 };
public int[] getPosition() {
return position;
}
public abstract void move(int width, int height) ;
Класс мяч:
public class Ball extends MoveAble{
private int[] position = new int[2];
private int[] velocity = { 1, 1 };
public Ball(int x_position, int y_position) {
position[0] = x_position;
position[1] = y_position;
}
@Override
public void move(int width, int height) {
if (position[0] > width - 30 || position[0] < 1) {
velocity[0] *= -1;
}
if (position[1] > height - 30 || position[1] < 1) {
velocity[1] *= -1;
}
position[0] += velocity[0];
position[1] += velocity[1];
}
Почему вы хотите наследовать поля «позиция» и «скорость» из абстрактного класса MoveAble, а затем затенять их в классе Ball? – rodit
Вам необходимо переопределить метод getPosition. Свойства не переопределяются родительскому классу в java – edmarisov
@edmarisov Это неверно. Филды наследуются, как и методы. (частные поля, конечно, недоступны) – dsh