objective-c是c語言的拓展,它的原意就是在原始的c語言的主體上加入物件導向的特性。
1、物件導向和面向過程
物件導向和面向過程是程式設計的兩種思考方式。物件導向,簡稱oop,它是以事物為中心,參與事件的事物是核心,完成事件只是事物的乙個小任務。面向過程,簡稱opp,它是以事件為中心,事件是核心,列出了完成事件的每乙個步驟,一步一步完成。也就是物件導向側重於從問題在尋找客體、客體的作用。客體間的關係即「誰」、「做什麼」、「怎麼做」,面向過程側重於問題的分解即「事件怎麼做」。
2、類和物件
(1)類是一組具有相同(特徵)屬性和行為(功能)的事物的集合(抽象)。物件就是類的具體實現。世間萬物皆物件。類其實就是一種資料型別,它的變數就是物件。
(2)類的定義
在oc中,類的定義分兩部分:介面部分和實現部分;
介面部分(inte***ce):宣告了類與父類的名字、方法,例項變數(成員變數)。介面檔案以.h為字尾的檔案。
例如 student.h
介面檔案
@inte***ce student : nsobject
//nsobject是所有類的基類在這裡是student的父類
//是方法的宣告
-(void) sayhi;
//打招呼的方法
-(void) eat;
//吃飯的方法
-(void) walk;
//走的的方法
實現部分(implementation):包含了方法的實現,真正意義上定義並實現類的行為。實現檔案以.m為字尾的檔案。
注意:編譯器不要求將介面檔案和實現檔案的**放在不同的檔案中。每乙個類用一對介面/實現原始檔是乙個良好的習慣。乙個檔案中可以宣告和定義多個類。
如果類之間沒有什麼關係,最好不要把不同的類放在同乙個檔案書寫。
例如
實現檔案
#import
@implementation student
//以下是方法的實現
-(void) sayhi
//打招呼的方法
-(void) eat
//吃飯的方法
(3)建立和使用物件
1>物件的建立
記憶體分配:為物件動態的分配記憶體位址。
初始化:在記憶體中初始化空間。
例如:student * stu =[[student new];
說明:向類傳送alloc訊息,就是為該類分配一塊足夠大記憶體,用於存放例項變數,同時初始化記憶體,填上的初始值。
2>物件的賦值使用
例如://main函式
#import "student.h"
int main (int argc, const char * argv)
->賦值必須例項變數的修飾符是@public。例項變數的修飾符還有@protected和@private,系統預設例項變數的型別是@protected,對於這兩種型別的例項變數,我們需要呼叫方法為其賦值。
廣義上講為例項變數賦值的方法成為設定器,取出例項變數的方法成為訪問器。
設定器、訪問器說明:
1. 設定器命名: set+首字母大寫的例項變數名 如:-(void)setage:(int)newage
2. 設定器引數不要與例項變數重名。
3. 讀取器:與例項變數名同名,並且返回型別與例項型別一致。
OC學習總結之物件導向和類
objective c是c語言的母集合,它的原意就是在原始的c語言的主體上加入物件導向的特性。1 物件導向和面向過程 物件導向和面向過程是程式設計的兩種思考方式。物件導向,簡稱oop,它是以事物為中心,參與事件的事物是核心,完成事件只是事物的乙個小任務。面向過程,簡稱opp,它是以事件為中心,事件是...
物件導向程式設計學習心得
菜鳥心得,如有錯誤,望大神指正 乍一聽物件導向程式設計,覺得好難好高深的樣子,其實不然,舉個栗子 我們知道css裡有class類,可以多處公用乙個class樣式,而且拓展方便。其實物件導向程式設計,類似於我們css裡的class類的概念,就是頁面中多處相同的互動效果或功能,就可以用物件導向的寫法實現...
OC學習之物件導向三大特徵
繼承性是指,在某種情況下,乙個類下面會有乙個子類,這個子類理論上來說會比之前的類 父類 具體化。比如還是 狗 這個類,假設它裡面有乙個成員變數是身高和體重,有乙個方法是咬人。然後再假設這個 狗 類中有 哈士奇 和 金毛 這兩種狗,這兩種狗除了繼承其父類中的成員和方法外,還有自己新增的一些,比如在 哈...