天天看點

Objective-C與Java類的一些差別Objective-C與Java類的一些差別

OC類和C一樣,需要有聲明和定義,先上一段OC代碼
Objective-C與Java類的一些差別Objective-C與Java類的一些差別
下面是聲明一個類

@interface - @end

@interface 用來聲明一個類,和java裡的class關鍵字類似 @end 使用@interface聲明一個類,必須以@end結尾,表示類聲明結束

People

People是類名

NSObject

NSObject是父類,People類要繼承NSObject類,繼承使用冒号“:”

{}

在類聲明的子產品 花括号裡面 用來聲明 成員變量 花括号外面 用來聲明 成員方法

@public

共有類型,和java類型,不必多說了,隻不過在OC裡邊,要在前面加上“@” 并且,我們設定一個類型以後,後面的成員如果沒有再給出類型,則都預設是設定前面的類型。

-

- (void)write; 成員方法前面加一個“-”(減号),是OC的文法,沒有為什麼,隻要是OC對象的方法,就必須以減号“-”開頭。

()

OC裡的資料類型,必須使用小括号括起來,沒有為什麼

@implementation - @end

使用@implementation - @end的部分,表示這部分是類的實作,必須以@end結束,表示類的實作的結束

- (void)write{}

實作聲明的方法,在{}裡實作具體的内容
Java的類沒有聲明的一說法,隻有C才有聲明 他們代碼類似這樣

Java

OC

Objective-C與Java類的一些差別Objective-C與Java類的一些差別
Objective-C與Java類的一些差別Objective-C與Java類的一些差別
在OC中,想要執行什麼行為,調用什麼方法,必須寫在[]内 格式如下:
那麼,OC建立一個對象的代碼大概就是下面的樣子:

*p

有C語言基礎的都知道,*p是一個指針,指針就是一個位址,他指向的就是我們記憶體當中建立的People對象,C裡面所有對對象的操作,都必須通過指針,有了指針,就等于擷取到了記憶體中的對象。

new

用來建立對象的行為,沒有為什麼,固定寫法,就好比Java裡建立對象也一定要使用new關鍵字一樣。
差別大概是下面的樣子:

People people = new People();

People *p = [People new];

直接擷取到對象

擷取到對象的指針

前面已經說過,OC對象的操作,必須要通過指針 那麼,通路成員變量大概要這樣寫:

people.age = 26;

p->age = 26;

直接使用對象,通過“.”擷取成員變量

使用指針擷取成員變量

調用方法,與建立對象是一個道理,建立對象我們是調用對象的new行為來擷取建立對象的指針 代碼大概是下面的樣子:

p

p是我們建立對象的指針,因為OC操作對象必須要用指針,是以這裡的行為執行者是p,write是我們要執行的行為,也就是方法,這樣就實作了使用指針調用方法。

people.write();

[p write];

直接使用對象,通過“.”調用方法

使用指針調用成員方法