- Java code
import java.util.ArrayList;public class Vehicle { public void run(){ System.out.print("Vruum"); } public void stop(){ System.out.print("stop!"); } } class Car extends Vehicle{ public void run(){ System.out.print("Car vruum"); } public static void main (String... args){ ArrayList<Vehicle> cars = new ArrayList<Car>(); cars.run(); } }
分析详细的分多 :)
------解决方案--------------------
ArrayList<Vehicle> cars = new ArrayList<Car>();
ArrayList<Vehicle>这个整体代表一个类型
ArrayList<Car>这个整体代表一个类型,
又继承关系的Vehicle和Car,而ArrayList<Vehicle>,ArrayList<Car>没又这层关系,所以类型不兼容,错误。
修改:
ArrayList<? extends Vehicle> cars = new ArrayList<Car>();
表示可以基类为Vehicle的所有类。
------解决方案--------------------
- Java code
import java.util.ArrayList;public class Vehicle { public void run(){ System.out.print("Vruum"); } public void stop(){ System.out.print("stop!"); } } class Car extends Vehicle{ public void run(){ System.out.print("Car vruum"); } public static void main (String... args){ //还有,这句话不报错吗?我的jdk1.5 ArrayList<Vehicle> cars = new ArrayList<Car>(); //cars.run(); //这句话出错把,应该改为 cars.add(new Car()); cars.get(0).run(); } }