前言:
重寫的函數(shù)名、參數(shù)個(gè)數(shù)和類型以及返回值必須一樣,只是重寫了函數(shù)的實(shí)現(xiàn)。所以重寫 set 或者 get 方法時(shí),方法名是不能亂寫的,而且重寫set,get大部分是完全覆蓋型的
擁有父類的行為,但是行為的具體的實(shí)現(xiàn)和父類的實(shí)現(xiàn)不一樣.
那么子類就自己按照自己的方式重寫這個(gè)方法就可以了.
如何重寫: 直接在類的實(shí)現(xiàn)中將這個(gè)方法重新實(shí)現(xiàn)一遍就可以了.
重載(overload):函數(shù)名相同,函數(shù)的參數(shù)列表不同(包括參數(shù)個(gè)數(shù)和參數(shù)類型),至于返回類型可同可不同。重載既可以發(fā)生在同一個(gè)類的不同函數(shù)之間,也可發(fā)生在父類子類的繼承關(guān)系之間,其中發(fā)生在父類子類之間時(shí)要注意與重寫區(qū)分開(kāi)。
重載發(fā)生在父類與子類之間就是多了或者少了幾個(gè)參數(shù),并且oc 是不支持的;發(fā)生在同一個(gè)類之間,其實(shí)也是多了或者少了幾個(gè)參數(shù),但是,oc是支持的
重寫(override):發(fā)生于父類和子類之間,指的是子類不想繼承使用父類的方法,通過(guò)重寫同一個(gè)函數(shù)的實(shí)現(xiàn)實(shí)現(xiàn)對(duì)父類中同一個(gè)函數(shù)的覆蓋,因此又叫函數(shù)覆蓋。注意重寫的函數(shù)必須和父類一模一樣,包括函數(shù)名、參數(shù)個(gè)數(shù)和類型以及返回值,只是重寫了函數(shù)的實(shí)現(xiàn),這也是和重載區(qū)分開(kāi)的關(guān)鍵。
并且重寫一般寫法來(lái)講還分為完全覆蓋 ;
和擴(kuò)展(擴(kuò)展一詞貌似不太準(zhǔn)確)----即調(diào)用super
,當(dāng)然也分寫在super前后之分
1.需要用到重寫的方法的某個(gè)參數(shù)的時(shí)候 (需要把參數(shù)的修改寫在 super 之前)例如:
- (void)setFrame:(CGRect)frame{
CGRect frame1 = frame;
frame1.size.height =300;
frame = frame1;
[super setFrame:frame];
}