public class hasstatic
}
a.程式通過編譯,輸出結果為:x=102
b.程式通過編譯,輸出結果為:x=103
c.10行不能通過編譯.因為x星私有靜態變數
d.5行不能通過編譯.因為引用了私有靜態變數
解析:同乙個類內,private變數可以訪問,所以cd錯。由於x是static的,存貯在類內,而不是物件內,所以++、–操作的是同乙個變數。
public class test
static class a
public void setvalue(int value)
public int getvalue() catch(exception e) finally
return value;
} }
static class b extends a
public void setvalue(int value)
} }
a.11 17 34
b.22 74 74
c.6 7 7
d.22 34 17
解析:首先,super()函式指的是呼叫父類的構造方法
①new b()
執行b的建構函式,第一行是super(5);
此時執行的是a的建構函式,a的構造函式呼叫的是setvalue()方法,由於b重寫了a的這個方法,
所以!!!執行的是b的 setvalue()方法。
即傳入的引數是25=10
此時,因為super,所以呼叫的是父類的 setvalue()方法,即value=10
第一行執行完畢。
第二行是 setvalue(getvalue()-3);
b沒有getvalue()方法,故執行父類的此方法,
try返回的是value=10+1=11,儲存在臨時棧中
finally中呼叫this的方法,這個this指的是b的物件,又重寫,故就是b的 setvalue()方法
value=211=22,第乙個列印到螢幕上的數字
接下來引數 getvalue()-3=11-3=8
傳入b的 setvalue()方法
此時value=28=16
至此,new b()執行結束
②new b(). getvalue()
b沒有 getvalue(),故執行a的 getvalue()
try返回16+1=17,儲存到臨時棧中
finally呼叫b的 setvalue()方法
value=172=34,第二個列印到螢幕上面的數字
最後主函式列印返回值,也就是try儲存到臨時棧的17
答案就是:22,34,17
筆試刷題總結
今天刷了一些筆試題,以下是刷完筆試題後看到的相關知識點的解析,做個小結。1 多型主要以兩種形式,靜態多型和動態多型,靜態多型主要實現了函式過載和運算子過載。動態多型主要實現了虛函式。虛函式是動態聯編,程式在執行的過程中確定呼叫哪乙個函式。2 int s 8 定義乙個指標陣列,該陣列中每個元素是乙個指...
LeetCode刷題總結
123 4567 891011 12 元素交換 swap a 1 a 3 sort排序 sort a.begin a.end 陣列顛倒 reverse a.begin a.end 陣列元素置為0 memset a,0,a.size 陣列取值 a.push back 定義二維陣列 vector vec...
LeetCode刷題總結
123 4567 891011 12 元素交換 swap a 1 a 3 sort排序 sort a.begin a.end 陣列顛倒 reverse a.begin a.end 陣列元素置為0 memset a,0,a.size 陣列取值 a.push back 定義二維陣列 vector vec...