帮我看看这个java程序哪里错了

package 实验二1;
import java.util.ArrayList;

import java.util.List;

public class 实验二1{
public static void main(String[] args) {

class Vehicle{
public void run(){
System.out.println("这是交通工具run方法");
}
}
class Motor extends Vehicle{
public void run(){
System.out.println("这是Motorrun方法");
}
}
class Ship extends Vehicle{
public void run(){
System.out.println("这是Shiprun方法");
}
}
class Aeroplane extends Vehicle{
public void run(){
System.out.println("这是Aeroplanerun方法");
}
}
class Car extends Motor{
public void run(){
System.out.println("这是Carrun方法");
}
}
class Bus extends Motor{
public void run(){
System.out.println("这是Busrun方法");
}
}
}
public class Test{
     
public static void main(String[] args) {
     class Vehicle{
         class Motor extends Vehicle{
         class Ship extends Vehicle{
             class Aeroplane extends Vehicle{
                 class Car extends Motor{
                     class Bus extends Motor{
                         {
List List=new ArrayList();
Vehicle v1=new Vehicle();
Vehicle v2=new Motor();
Vehicle v3=new Ship();
Vehicle v4=new Aeroplane();
Vehicle v5=new Car();
Vehicle v6=new Bus();
List.add(v1);
List.add(v2);
List.add(v3);
List.add(v4);
List.add(v5);
List.add(v6);
for (Vehicle vehicle : List) {
vehicle.run();
}
}
}
}
}
     }
}
}

}

主类里面不能写其他类。另外你其他类的run方法写错了。

重载和重写你没分清楚
一般父类定义成抽象类,只有方法,
子类继承父类,实现方法,也可以添加自己的方法