2012-06-23 36 views
0

Java新手在這裏,我試圖找到以下代碼塊的輸出:我知道我錯過了一些Java的基礎知識,但如果有人可以指導我,我將不勝感激。出了一個java程序

public class Test4 { 
    public static void main(String[] args) { 
     C c = new C(1, 2); // creates an obj c with arguments 
     D d = (D) c; // creates class obj 'D' and casts 'c' to D? 
     System.out.println(d.getP()); 
     System.out.println(d.getProd()); 
    } 
} 

public class C { 
    protected int m; 
    protected int n; 
    protected static int kappa = 0; 

    public C(int m1) { 
     this.m = m1; 
     this.n = m1; 
     kappa = kappa + 2; 
    } 

    public C(int m1, int n1) { 
     this.m = m1; 
     this.n = n1; 
     kappa = kappa + 2; 
    } 

    public int getSum() { 
     return m + n; 
    } 

    public int getProd() { 
     return m * n; 
    } 

    public static int getKappa() { 
     return kappa; 
    } 
} 

public class D extends C { 
    private int p; 

    public D(int p1) { 
     super(p1); 
     this.p = p1; 
    } 

    public D(int k1, int n1, int p1) { 
     super(k1, n1); 
     p = p1; 
    } 

    public int getP() { 
     return p; 
    } 

    public int getSum() { 
     return m + n + p; 
    } 
} 
+0

你可以通過編譯和運行找到輸出 –

+0

爲什麼你不運行該文件? –

+0

我是一個超級noob,我有問題使用netbeans運行這個。我只是創建2個不同的類(D和C )與主類? – user1477348

回答

1

你d類擴展了C,所以你可以使用d爲C型(C c = new D();),但不是C類型d的(這是錯誤的D d = new C();

因此,在你的代碼

C c = new C(1, 2); // creates an obj c with arguments 
D d = (D) c; // <--this will generate ClassCastException 
+0

我不會墨水上面的代碼有任何錯誤...不應該產生一個異常......因爲我也有正確的答案輸出。它的6和4. – user1477348

+0

沒關係,你是對的。 – user1477348

+0

所以如果我做了,D d =新的D(1,2,3)和下一行C c1 = d。這會給出一個錯誤? – user1477348