今天主要涉及Object-C中類,對象和方法的使用,這也是與C語言不同的地方,C語言被定義為過程性語言,而Object-C則像java和C#一樣是面向?qū)ο蟆R欢未a開始新的學(xué)習(xí),首先新建文件 main.m 主函數(shù), NSObject+Fraction.h(如同java中定義接口)和NSObject+Fraction.m(如同java中接口實(shí)現(xiàn)類)
//// NSObject+Fraction.h// Demo1//// Created by lee on 14/10/28.// Copyright (c) 2014年 lee. All rights reserved.//#import <Foundation/Foundation.h>@interface Fraction: NSObject{ int numerator; int denominator;}-(void) PRint;-(void) setNumerator: (int) n;-(void) setDenominator: (int) d;-(void) result;@end
首先講解@interface部分
1.Fraction類名,通常首字母大寫
2.Fraction: NSObject 定義類來自何處即定義新類時(shí)必須指明它的父類
3.{...}中定義的為類成員,即實(shí)例變量
4.-(void) print;等定義處理該類的對象時(shí)將要用到的方法。
通用格式如下:
@interface <#class name#> : <#superclass#>{ memberDeclarations;}methodDeclarations;@end
5.實(shí)例方法 : -(void) setNumerator: (int) n;
5.1 開頭的-號(hào)表明該方法為實(shí)例方法,還有一種為+號(hào)開頭,表明該方法為類方法。
5.2(void)表示該方法的返回值類型。
5.3 setNumerator 表示該方法的名稱。
5.4 (int) n 表示該方法需要的參數(shù),一個(gè)整形的參數(shù)。
5.5 每一個(gè)方法均以;結(jié)束
6.方法聲明如圖所示:
//// NSObject+Fraction.m// Demo1//// Created by lee on 14/10/28.// Copyright (c) 2014年 lee. All rights reserved.//#import "NSObject+Fraction.h"@implementation Fraction: NSObject-(void) print{ NSLog(@"%i/%i", numerator, denominator);}-(void) setNumerator:(int)n{ numerator = n;}-(void) setDenominator:(int)d{ denominator = d;}-(void) result{ int quotient = numerator/denominator; NSLog(@"the quotient is %i :", quotient);}@end
@implementation部分講解
1.@interface中聲明方法,@implementation中實(shí)現(xiàn)。
2.@implementation中類名與@interface中類名相同。
3.@implementation中包含@interface中指定的每個(gè)方法的代碼。
//// main.m// Demo1//// Created by lee on 14/10/28.// Copyright (c) 2014年 lee. All rights reserved.//#import <Foundation/Foundation.h>#import "NSObject+Fraction.h"int main(int argc, const char * argv[]) { @autoreleasepool { int quotient, numertor, denominator; numertor = 10; denominator = 2; quotient = numertor/denominator; NSLog(@"The fraction is %i/%i /nthe quotient is %i", numertor, denominator, quotient); NSLog(@"*** break ***"); Fraction *myFraction; myFraction = [Fraction alloc]; myFraction = [myFraction init]; [myFraction setNumerator: 10]; [myFraction setDenominator: 2]; NSLog(@"The value of myFraction is :"); [myFraction print]; [myFraction result]; } return 0;}
兩種方法來實(shí)現(xiàn)兩數(shù)的相除,主要講解下一種即 NSLog(@"*** break ***");后面的部分,有C基礎(chǔ)的能很快的明白
1.Fraction *myFraction;用法同C語言中指針類似,表示定義Fraction類型的對象。
2.對象建立后,需要為該存儲(chǔ)對象分配存儲(chǔ)空間,即myFraction = [Fraction alloc];
3.alloc獲得類的新實(shí)例,使得對象的所有實(shí)例變量成初始化狀態(tài)。
4.然后需要對對象進(jìn)行實(shí)例化操作,即myFraction = [myFraction init];
5.init用語初始化類的實(shí)例變量。
6.上述方法簡寫如下:Fraction *myFraction = [[Fraction alloc] init];
7.[myFraction setNumerator: 10];調(diào)用方法存儲(chǔ)實(shí)例變量。
運(yùn)行結(jié)果如下:
2014-10-29 00:52:37.980 Demo1[2834:13881] The fraction is 10/2 the quotient is 52014-10-29 00:52:37.981 Demo1[2834:13881] *** break ***2014-10-29 00:52:37.981 Demo1[2834:13881] The value of myFraction is :2014-10-29 00:52:37.981 Demo1[2834:13881] 10/22014-10-29 00:52:37.981 Demo1[2834:13881] the quotient is 5 :Program ended with exit code: 0
注:1.Object-C中變量名稱命名規(guī)則:名稱必須以字母或下劃線開頭,之后可以是任何字母,下劃線或者數(shù)字組合。
2.Object-C保留名不能作為變量名,如:int
3.Object-C中大小寫字母是有區(qū)別的。如:sum和Sum和SUM是表示不同的變量。
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注