2012-06-23 3 views
0

자바 초보자는 다음 코드 조각 출력을 찾으려고합니다. 자바의 기본 요소가 누락되었음을 압니다. 누군가 나를 안내 할 수 있다면 감사하겠습니다. 당신이 D의 유형으로 C의 유형 (C c = new D();)이 아닌 C로 D를 사용할 수 있도록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

저는 매우 멍청한데, netbeans를 사용하여 실행하는 데 문제가 있습니다. 두 가지 클래스 (D와 C)를 만듭니 까?) 메인 클래스와? – user1477348

답변

1

귀하의 D 클래스는 C를 확장 (이 잘못 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

내가하지 말라 잉크 위의 코드와 오류가 있습니다 ... shouldnt 예외를 생성 ... 나는 또한 출력에 대한 올바른 답변을 가지고. 그 6과 4. – user1477348

+0

당신이 맞다. – user1477348

+0

내가 그렇게한다면, D d = 새로운 D (1,2,3)와 다음 라인 C c1 = d. 이 오류가 발생합니까? – user1477348

관련 문제