Это мое абстрактное AbstractVehicles класса, который реализует интерфейс транспортных средствМогу ли я передать объект из подкласса в абстрактный класс?
public abstract class AbstractVehicles implements Vehicles{
}
и вот моего CarImpl
public class CarImpl extends AbstractVehicles implements Car {
private CarAI ai;
private static final int CAR_FUEL_LEFT = 10;
public CarImpl(){
super(FUEL_LEFT);
this.ai = new CarAI();
}
public void move(World w){
// AI is using here
ai.act(w);
}
}
и вот мой BicycleImpl
public class BicycleImpl extends AbstractVehicles implements Bicycle {
private BicycleAI ai;
private static final int BICYCLE_FUEL_LEFT = 10;
public BicycleImpl(){
super(BICYCLE_FUEL_LEFT);
this.ai = new BicycleAI();
}
public void move(World w){
// AI is using here
ai.act(w);
}
}
где интерфейс автомобилей и велосипедов является маркер интерфейс что
public interface Car extends Vehicles {
}
public interface Bicycle extends Vehicles {
}
Вопрос пришел сюда Я внедрил AI для автомобилей и велосипедов отдельно в других упаковках под названием BicycleAI и CarAI. Но код в их CarImpl и BicycleImpl одинаковый. Поэтому я хотел бы добавить это в абстрактный класс, чтобы код можно было повторно использовать. И класс BicycleAI и класс CarAI реализует интерфейс AI.
Как мы видим выше, их код для действия тот же, но там объекты ИИ различны. В любом случае я могу поместить этот код в абстрактный класс?
Я пытался сделать это
public abstract class AbstractVehicles implements Vehicles{
protected AI ai;
private int fuelLeft;
public AbstractVehicles(int fuelLeft){
this.fuleLeft = fuelLeft
AI ai = new AI();
}
public void move(World w){
ai.act(w); // But I have no idea this is CarAI or BicycleAI
}
}
Я немного запутался о конструкторе в AbstractVehicles и конструктор в RabbitImpl. Если я создаю объект RabbitImpl, и я вызываю ход.
На самом деле вы можете просто поместить движение в AbstractVehicles. Абстрактные классы могут иметь конкретные методы. – Cruncher
Итак, что случилось с тем, что вы пробовали? –
Является ли ваш 'CarAI' или' BicycleAI' подклассом 'AI'? –