object ouput exam questions

 物件輸出考題

下面 JAVA 程式當輸入 0 或 1 時,請問其輸出分別是什麼



下面 JAVA 程式當輸入 0 或 1 時,請問其輸出分別是什麼?(16 分)

import java.util.*;

public class C7 {

public static void main(String[ ] args){new C7( ).run( );}

public static void run( ){

Scanner sc=new Scanner(System.in);

A a; int code=sc.nextInt( );

if(code == 0) a=new A( );

else a=new D( );

System.out.println("(a)"+a);

System.out.println("(b)"+a.toString( ));

sc.close( );

} }

public class A {public String toString( ){return "A";}

public class D extends A {public String toString( ){return "D";}

}


我的回答

(一)輸入0

執行a=new A(),a變數為A類別之實例,印出物件預設會呼叫toString()函式,如該函式沒有定義,會印出物件的識別代號,如D@65e579dc。

輸出結果如下,第一行輸出印出物件,呼叫toString()函式。第二行輸出直接透過物件使用toString()函式。
(a)A
(a)A

(二)輸入1

執行a=new D(),a變數為D類別之實例,在D類別中重寫toString()函式。

輸出結果如下,第一行輸出印出物件,呼叫toString()函式。第二行輸出直接透過物件使用toString()函式。
(a)D
(a)D

下面為可執行程式碼,貼到Online Java Compiler - online editor (onlinegdb.com)

import java.util.*;

public class Main {

    public static void main(String[ ] args){

        new Main( ).run(1 );

        

    }

    public static void run(int code ){

    //Scanner sc=new Scanner(System.in);

    A a; //int code=sc.nextInt( );

    if(code == 0) a=new A( );

    else a=new D( );

    System.out.println("(a)"+a);

    System.out.println("(b)"+a.toString( ));

    //sc.close( );

    } 

    

}

 class A {

    public String toString( ){return "A";}

}

 class D extends A {

    public String toString( ){return "D";}

}

chatgpt的回答


程序的输出取决于用户输入的值。程序根据用户输入的值(0或1)创建不同的对象,然后调用这些对象的`toString()`方法。根据输入值的不同,输出也会不同。


- 当输入为0时,程序会创建一个`A`对象,然后调用`toString()`方法。

- 当输入为1时,程序会创建一个`D`对象,也调用`toString()`方法。


所以,根据不同的输入,输出如下:


- 如果输入为0,输出如下:

  ```

  (a)A

  (b)A

  ```


- 如果输入为1,输出如下:

  ```

  (a)D

  (b)D

  ```


程序会根据用户的输入创建不同的对象,然后调用相应对象的`toString()`方法,输出对应的结果。


Comments

Popular posts from this blog

How to write data into a excel file using vbscript

Format date as yyyy-mm-dd using vbscript