下面這個習題是乙個,有關構造方法內部的多型方法的行為例子。
這是乙個構造方法呼叫的層次結構帶來的乙個問題。
package com.test;
public class test }
abstract class graphics }
class roundgraphics extends graphics
@override
void draw() }
程式執行之後,它的輸出結果是什麼?
請先別看答案,寫出你的結果。
本題正確的輸出結果為:
圖形繪製以前
半徑=0
圖形繪製以後
半徑=5
radius不是預設初始值1,而是0。是不是異常鬱悶?
初始化的實際過程是:
1、在其他任何事物發生之前,將分配給物件的儲存空間初始化成零。
2、如前所述那樣,呼叫基類的構造方法。此時,呼叫被覆蓋的draw()方法(這情況是在呼叫roundgraphics構造方法之前呼叫的),由於步驟(1)的緣故,我們此時發現radius的值為0。
3、按照宣告的順序呼叫成員的初始化**。
4、呼叫派生類的構造方法主體。
在編寫構造方法時,有一條有益的規則:「用盡可能簡單的方法使物件進入正常狀態;如果可以的話,避免呼叫其他方法,換句話說,構造方法只需要做一些對成員變數賦值的工作就行了。」
Java習題練習(一)
輸出 1,100 內所有的質數,並統計 system.out.println 1 int sum 0 for int a 2 a 101 a b if a b system.out.println 在 1,100 內,質數總數為 sum 1 求斐波拉契數列的第十個數字大小 public static...
JAVA程式設計習題一
定義乙個一維的整數陣列,其中儲存隨機生成的1000個1至100以內的整數,統計每個整數出現的次數 演算法思路 定義乙個長度1000的陣列,用random來隨機生成a i 建立雙重迴圈,定義次數x從0開始 令a i 和a j 比較,如果a i 和a j 的數相等,則次數加1 如果不相等則重新進入迴圈。...
KMP經典習題
kmp 演算法經典題目 pku2406 power strings pku1961 period 這個題目是1961的公升級版,考察隊next陣列的應用,附上 include include include using namespace std const int ma 1e6 5 char s ...