總結我們以前所學的東西,我們會發現有很多困擾我們的東西,今天我就要先解決三座大山的壓迫:過載 重寫 重繪
過載:過載我在之前曾經有講到過,過載分為構造方法①的過載和普通方法的過載。方法的過載主要的不同就是傳參的不同:例如
構造方法:
public student(int score){}
public student(string name){}
public student(int i,int j,string name){}
不同的地方就是引數的不同,而這裡邊我們要特別注意的是,什麼情況算是引數不同?
⑴ 資料型別不同
public student(int score){}
public student(string name){}
⑵順序不同
public student(int score,string name){}
public student(string name,int score){}
⑶個數不同
public student(string name){}
public student(int i,int j,string name){}
方法的過載是十分重要的,對於我來說,尤其是構造方法的過載。就目前我接觸的而言,我們經常會用構造方法來傳參,傳遞的引數不一定都是一致的。所以,構造方法的過載對於我來說就應該十分重要了。
① 在這裡舉個例子,我們最近在做五子棋,之前的畫板也是,我們都用到了畫筆。二畫筆我們是從畫布上取得的,但是我們真正用到的地方確實要在***裡邊,那麼我們怎麼來把畫筆傳過去呢?
jpanel jp=new jpanel()
graphics g=jp.getgraphics();
chesslistener l=new chesslistener(g);//這些都是在在主函式類裡面的
//而在監聽類裡邊裡
public chesslistener(graphics g)
這也是構造方法的乙個重要作用,那麼,構造方法在例項化物件時,又有什麼作用呢?
初始化的作用!!!
student stu=new student("張三");
這時候初始化的名字就是張三了。
我們為什麼要初始化呢?
每個類裡邊都有乙個預設的無參的構造方法
重寫:什麼是重寫,重寫就是方法名相同,引數個數相同,引數型別相同,順序相同,唯一不同的就是方法體。我在前邊詳細的講解了什麼是方法的重寫,這裡就不做介紹,其實最主要的是用處。方法的重寫主要是子類繼承父類的時候 ,可能會重寫父類的構造方法,重寫方法的訪問修飾符可以大於或者等於父類方法的訪問修飾符。
這裡我們就要講講父類和子類方法的使用了。
//父類
public class student
}//子類
public class unstudent
public void study()
public void play()
}public void paint(graphics g)
}重繪:什麼是重繪,重繪就是當你畫完一樣東西時,因為拖動,變換大小等因素,會導致畫布上的東西消失,這時我們就要把我們畫過的東西再重新畫一遍,這就是重繪。
重繪的時候有很重要的東西需要謹記,那就是,方法名,引數型別引數名必須一致。不然就不是重繪。③與下面的**對比:
public void paint(graphics2d g){}
這就不是方法的重繪了,而是過載。所以,重繪其實就是paint方法的重寫(?)
其實還有一點,就是當我們重繪時,如果繪方法原來並不是我們自己寫的,那麼我們最好繼承一下父類的重繪方法,不然我們可能會在重寫時缺少對本來元素的掌握,就比如我們上述的重繪方法④,如果我們沒有這句,那麼在重繪時,畫布就會發生變化!!
7 過載重寫重定義
一 過載 overload 指函式名相同,但是它的參數列列個數或順序,型別不同。但是不能靠返回型別來判斷。1 相同的範圍 在同乙個作用域中 2 函式名字相同 3 引數不同 4 virtual 關鍵字可有可無。5 返回值可以不同 二 重寫 也稱為覆蓋 override 是指派生類重新定義基類的虛函式,...
過載重寫重定義
傳智掃地僧課程學習筆記。過載發生了同乙個類中,這個很簡單,不用多說,重寫和重定義,發生了兩個類之間,有virtual關鍵字的,將發生多型,即重寫,沒有的,是重定義,說2個情況,1,若是子類呼叫父類中的函式,並且這個函式名,是名字,在子類中沒有,那麼子類物件可以直接呼叫父類的函式,2,若是這個被呼叫的...
過載 重寫 重定義
何為過載 何為重寫,又何為重定義呢?下面我將從c 實現的角度進行詳細剖析,以及c 語言底層是如何實現過載 重寫和重定義的。一 過載 過載 同乙個類中函式名相同,函式的引數列表不相同的兩個及兩個以上的函式就是函式過載。注意 函式的返回值不能作為函式是否過載的依據。如 類example中,函式a就是過載...