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
Post a Comment