2015-02-05 73 views
-2

爲什麼輸出不符合? 我需要抽象類嗎?我試過了,但沒有奏效。 我知道C++,但我是新來的Java所以我理解這個概念,但我顯然做錯了什麼。Java多態性奇怪的行爲

產量: Golf je Mini。 Kapacitet:4 Br kotaca:6 Golf je Mini。 Kapacitet:4 Br kotaca:6 Mercedes Nosivost:3000t Kapacitet:4 Br kotaca:6

產量應該是: Mondeo je karavan。 Kapacitet:5 Br kotaca:4 Golf je Mini。卡帕奇特:3 Br kotaca:4; 奔馳Nosivost:3000噸Kapacitet:4溴kotaca:6

public class apples { 
    public static void main(String args[]){ 
    Vozilo Ford = new Auto(4, 5, "Mondeo", "Karavan"); 
    Vozilo golf = new Auto(4, 3, "Golf", "Mini"); 
    Vozilo Kam = new Kamion(6, 4, "Mercedes", 3000); 
    Vozilo vozila[] = {golf, Ford, Kam}; 
    Ford.ispis(); 
    golf.ispis(); 
    Kam.ispis(); 
} 
} 

class Vozilo 

    public class Vozilo { 
    private static int brKotaca; 
    private static int brPutnika; 

    Vozilo(int br, int br2){ 
     brKotaca = br; 
     brPutnika = br2; 
    } 

    public static void setBrKotaca(int br){ 
     brKotaca = br; 
    } 
    public static int getBrKotaca(){ 
     return brKotaca; 
    } 

    public static void setBrPutnika(int br2){ 
     brPutnika = br2; 
    } 
    public static int getBrPutnika(){ 
     return brPutnika; 
    } 

    public void ispis() { 
     System.out.println("Vozilo"); 
    } 

} 

class Auto 

    public class Auto extends Vozilo { 
    private static String ime; 
    private static String vrsta; 

    Auto(int _brKotaca, int _brPutnika, String _ime, String _vrsta) 
    { 
     super(_brKotaca, _brPutnika);  
     ime=_ime; 
     vrsta=_vrsta; 
    } 
    public static String getIme(){ 
     return ime; 
    } 
    public static String getVrsta(){ 
     return vrsta; 
    } 

    public void ispis(){ 
     System.out.println(ime + " je " + vrsta + ". Kapacitet: " + this.getBrPutnika() + " Br kotaca: " + this.getBrKotaca()); 
    } 
    } 
class Kamion 

    public class Kamion extends Vozilo { 
    private static String ime; 
    private static int nosivost; 

    Kamion(int _brKotaca, int _brPutnika, String _ime, int _nosivost){ 
     super(_brKotaca, _brPutnika);  
     ime=_ime; 
     nosivost = _nosivost; 
    } 
    public void ispis(){ 
     System.out.println(ime + " Nosivost: " + nosivost +"t " + " Kapacitet: " + this.getBrPutnika() + " Br kotaca: " + this.getBrKotaca()); 
    } 

} 
+3

定義_incorrect_。 – 2015-02-05 16:49:17

+0

Golf je Mini。 Kapacitet:4 Br kotaca:6 Golf je Mini。 Kapacitet:4 Br kotaca:6 Mercedes Nosivost:3000t Kapacitet:4 Br kotaca:6 這是輸出。 – Kreso 2015-02-05 16:51:51

+2

請編輯您的問題並將其包含在那裏。那個輸出有什麼問題? – 2015-02-05 16:52:25

回答

1

您已經定義了類變量的getter和setter方法爲static,這意味着僅在那裏每個那些每類中的一種,而不是每個實例。

從所有類變量和所有方法中刪除static,以便每個對象都有自己的實例變量。

0

private static int brKotaca; private static int brPutnika;

通過定義這些字段爲靜態的,你說的每個字段的單個實例應在整個類Vozilo及其所有子類的所有實例共享。因此,每次給brKotaca分配一個值時,就是所有實例的值。這真的是你打算的行爲嗎?

+0

謝謝,它工作! – Kreso 2015-02-05 16:58:36