簡體   English   中英

堆棧溢出錯誤

[英]Stackoverflow error

下面給出的代碼顯示了運行時的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();
Car() {
    c[0] = new Polo();
    i=0;
}

由於Polo是Car()的子類-它必須適合Car [] -在構造自身時,它將調用Car的構造函數。 Car構造函數嘗試創建一個新的Polo()

由於Polo是Car()的子類-它必須適合Car [] -在構造自身時,它將調用Car的構造函數。 Car構造函數嘗試創建一個新的Polo()

由於Polo是Car()的子類-它必須適合Car [] -在構造自身時,它將調用Car的構造函數。 Car構造函數嘗試創建一個新的Polo()

...你知道嗎?

stackoverflow通常意味着您有一個無限循環。

收到此消息的原因是因為您從testdrive方法調用驅動器,並且在該方法中再次調用drive。

聽起來您可能發生了一些無限遞歸。

drive()調用testdrive() ,而class drive()則調用testdriver() ……直到永遠,或者直到內存用完為止,從而導致堆棧溢出錯誤。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM