1、根類即是最頂層的類,父類也可稱為超類;
2、關於例項變數的繼承:
只有宣告在@inte***ce部分的例項變數才能被子類繼承:包括在類名後馬上使用花括號宣告的變數和使用@property宣告的變數,都可以繼承。如果完全宣告在@implementation部分的變數,則屬於私有變數,需要提供方法才能訪問。
3、每個例項都有自己的一套例項變數,即使這套例項變數是繼承來的。比如bclass是從aclass繼承來的,他們都有乙個變數(int) n,那麼當改變了aclass.a的值的時候,bclass.a的值不會隨著改變。他們是兩個不同的例項。
反觀另一種特別的情況(**8-5):rectangle類是矩形類,xypoint類是點類,rectangle類裡面包含了乙個變數origin是(xypoint *)型別的,用來存放這個矩形的位置點。新建了乙個rectangle類的例項myrect,新建了乙個xypoint類的例項mypoint,然後通過語句
myrect.origin= mypoint;
將mypoint的值賦給myrect作為它的位置點。這時候出現了一種情況,當mypoint的值改變了以後,myrect所包含的origin變數的值也跟著改變了。原因是使用上面的語句的時候,賦給origin變數的值並不是mypoint的內容,而是乙個指標,指向了mypoint的儲存位置,所以當mypoint的內容改變了以後,origin變數的值也跟著改變了,myrect並沒有自己新建一套變數去儲存mypoint的內容,存放的僅僅是乙個指標。
對於這兩種情況要區別去理解:aclass和bclass是兩個不同的例項,各有各的變數;myrect並沒有用乙個變數去儲存mypoint的內容,僅僅只用了乙個(xypoint *)型別的變數來存放了mypoint的指標。
4、對於3中的myrect和mypoint,只要在myrect裡面重新宣告了mypoint用以存放位置的幾個變數,然後把mypoint裡面對應的變數值一一賦給自己的變數,那麼mypoint的值再怎麼改變也不會再影響到myrect包含的位置點變數了。其實即是在myrect的內部宣告乙個mypoint,即有了乙個私有的mypoint。
5、關於@class指令,比如在介面檔案cclass.h中有如下**段:
#import
@class aclass
@inte***cecclass: nsobject
在這段**中出現了指令@class,它的意思是接下來的**中會使用到aclass這個類,這裡告訴編譯器接下來如果遇到「aclass」就把它當做乙個類來對待即可。
但是如果下方**要訪問到aclass包含的變數,那就會報錯,這種情況應該把aclass.h這個介面檔案import進來。
6、關於4,其實不用再去宣告xypoint類的變數,只需要將rectangle類中設定origin的方法改寫如下即可:
-(void)setorigin: (xypoint *) pt {
if (! origin) { //如果origin是空的,則為false,那麼(! origin)為true,執行以下**;
origin = [[xypoint alloc] init];
origin.x = pt.x; //x和y都是xypoint的變數,這裡origin是乙個(xypoint *)型的變數,
origin.y = pt.y; //它也會包含有一套xy,所以不需再去宣告一套;
直接在方法中設定一套xy,就不會受mypoint影響。
這種情況下,雖然origin.x被賦予的仍然是pt.x的指標,但是也完全不需要擔心會受到mypoint的影響的了,因為雖然現在origin.x和pt.x指向的是同一塊記憶體,但是如果改變了pt.x的值的話,其實系統是新分配了一塊記憶體寫了乙個新的值,然後讓pt.x指向這塊新的記憶體,origin.x指向的記憶體不會受到任何影響。
以下圖為例:
(1)、origin = mypoint是這種情況:
(2)、origin.x = pt.x是這種情況:
7、在預設的情況下,合成(synthesize)的設值方法只是簡單地複製物件的指標,而不是物件的本身,其實即是assign。
8、關於方法的覆寫:
覆寫的方法是乙個同名的新方法,必須有相同的返回型別,並且引數的數目也不能改變。
iOS基礎(oc) 繼承
知之部落格 期待與您交流!一 成員訪問型別 private 私有成員,不能被外部函式訪問 使用 也不能被子類繼承 protected 保護成員,不能被外部函式訪問,可以被子類繼承 public 公有成員,可以被外部函式訪問,也可以被子類繼承。oc中,所有的方法 訊息 都是公有的。二 重寫 繼承的另一...
OC基礎語法之封裝繼承多型
封裝 隱藏內部實現,穩定外部介面.封裝就是定義類 定義屬性 定義方法 set方法 提供乙個方法給外界設定成員變數的值,沒有返回值,一定要接收乙個引數,引數型別跟成員變數型別一樣,形參的名稱不能跟成員變數名一樣。get方法 返回物件內部的成員變數,肯定有返回值,返回值與成員變數型別一致,方法名跟成員變...
C 基礎(5) 類繼承
1.從乙個類派生出另乙個類時,原始類稱為基類,繼承類稱為派生類。class tabletennisplayer 乙個簡單的基類 void resettable bool v 將ratedplayer類宣告為從tabletennisplayer類派生而來 class ratedplayer publi...