public class PolyTest {
public void run(QQ qq) {
qq.run();
}
public void run(BMW bmw) {
bmw.run();
}
public static void main(String[] args) {
PolyTest t = new PolyTest();
BMW bmw = new BMW();
t.run(bmw);
QQ qq = new QQ();
t.run(qq);
}
}
class Car {
public void run () {
System.out.println("car");
}
}
class QQ extends Car {
public void run () {
System.out.println("qq");
}
}
class BMW extends Car {
public void run () {
System.out.println("bmw");
}
}
如果还要继续添加很多车辆,那么照上面这个办法来做的话就会很费事,由于这些车辆是继承一个父类Car,所以我们可以直接声明它们的父类,然后再用父类的引用指向增加的车辆:
public class PolyTest {
public void run(Car car) {
car.run();//直接声明一个父类型的参数为car的方法
}
public static void main(String[] args) {
PolyTest t = new PolyTest();
Car car = new BMW();//父类的引用指向子类对象
t.run(car);//把参数car传给父类型方法里的参数car
Car car1 = new QQ();//父类的引用指向子类对象。这里也可以QQ qq = new QQ();这样的话就是把qq这个引用向上转换成父类的引用car,结果是一样的
t.run(car1);把参数car1传给父类型方法里的参数car
//如果还要继续添加车辆的话,
//Car car2 = new ...();或是... ... = new ...();
//.....
}
}
class Car {
public void run () {
System.out.println("car");
}
}
class QQ extends Car {
public void run () {
System.out.println("qq");
}
}
class BMW extends Car {
public void run () {
System.out.println("bmw");
}
}