В файле CarTest у вас должно быть:
abstract class CarTest
{
abstract void start();
abstract void accelerate();
abstract void brakes();
static class Kia extends CarTest
{
Kia() {
}
void start()
{
System.out.println("Kia started");
}
void accelerate()
{
System.out.println("Kia accelerate");
}
void brakes()
{
System.out.println("kia stops");
}
}
static class Audi extends CarTest
{
Audi() {
}
void start()
{
System.out.println("Audi started");
}
void accelerate()
{
System.out.println("Audi accelerate");
}
void brakes()
{
System.out.println("Audi stops");
}
}
}
Обратите внимание, что Kia и Audi теперь являются статическими внутренними классами и имеют конструктор без аргументов.Затем вы должны поместить в ДРУГОЙ файл класс Driver, который выглядит следующим образом:
class Driver
{
Driver(){}
void driver(CarTest c)
{
c.start();
c.accelerate();
c.brakes();
}
}
И, наконец, в ТРЕТЬЕМ файле вы поместите свой основной класс, который будет вызывать другие классы следующим образом:
import (thePackage).CarTest.Audi;
import (thePackage).CarTest.Kia;
public class Main {
public static void main(String[] args) {
Driver d = new Driver();
d.driver(new Kia());
d.driver(new Audi());
}
}
Важно разделить ваши классы на разные файлы, а не хранить все в одном гигантском файле.Это сбивает с толку читать, исправлять и действительно делать что-либо.Вам также нужно убедиться, что вы создаете конструкторы для классов, которые будут создавать экземпляры AKA, вы будете использовать new
для них.Также убедитесь, что все эти файлы находятся в одном пакете.