【系統公告】頁面上方功能列及下方資訊全面更換新版,舊用戶可再切回舊版。 前往查看

計算機概論、大意(資訊科學概論,電腦常識,電子計算機概論)題庫下載題庫

上一題
29 下列的 Java 語言程式執行後輸出為何?
import java.lang.*;
class A
{
public static int value=0;
public A(){ value++; }
public void fun(){ value++; };
}
class B extends A
{
public B(){ super(); value--;}
public void fun(){ value--; };
}
class test
{
public static void main (String[] argv)
{
B b=new B(); fun(b);
System.out.println(b.value);
}
public static void fun(A x)
{
x.fun();
}
{

(A)0
(B)1
(C)-1
(D)-2


答案:登入後觀看
難度: 適中
最佳解!
Adam Lin 高一上 (2016/04/07)
 B b=new B(); fun(b);  先看這一行以 B 類別,宣告一個 b 的物件把 b 帶入fun這個函式之中public static void fun(A x){ x.fun();}剛剛帶入的 b 跑到了這裡因此x.fun();  =  b.fun();b.fun(); 代表  要執行上方B類別中的fun函式:class B extends A{public B(){ super(); value--;}public void fun(){ value--; };   }不管執行哪個函式都一定要先執.....看完整詳解
7F
110上普考111上高考 (2021/04/14)

附帶說明

當主程式執行fun(b);時,會執行底下程式

public static void fun(A x){
x.fun();
}

這裡的A,是B的父類。雖然如此,但是丟入b,而b指向B,就會執行B.fun(),而不會是A.fun()

如果今天反過來,主程式裡是

A a = new A();

fun(a);


然後fun( B x),這樣編譯就會失敗,因為子類參考不能指向父類


8F
蔡明勳 高三上 (2022/09/30)
6336a42618666.jpg
這個出題者括號打錯,縮排也沒做好看了頭很痛

29 下列的 Java 語言程式執行後輸出為何? import java.la..-阿摩線上測驗