下面给出的代码显示了运行时的Stackoverflow错误。但是,如果我使另一个类CarChange创建Car的对象,它将成功运行。我是一个初学者,请执行以下代码以了解在Java中进行向上转换的重要性。
public class Car { int i; Car[] c=new Car[2]; Car() { c[0] = new Polo(); i=0; } void drive(){ c[i].testdrive(); //the overloaded method in subclasses polo and swift } void change() { if(i==0) { i++; c[i] = new Swift(); } } public void testdrive() { //overloaded method in subclasses polo and swift System.out.println(" test drive car"); } //class Tester { //main Car c= new Car(); c.drive(); c.change(); c.drive();
一个stackoverflow通常意味着您有一个无限循环。
收到此消息的原因是因为您从testdrive方法调用驱动器,并且在该方法中再次调用drive。