从零开始学习Object-C---第三天

王朝学院·作者佚名  2016-08-27
窄屏简体版  字體: 小  |  中  |  大  |  超大  

今天主要涉及Object-C中类,对象和方法的使用,这也是与C语言不同的地方,C语言被定义为过程性语言,而Object-C则像java和C#一样是面向对象。一段代码开始新的学习,首先新建文件 main.m 主函数, NSObject+Fraction.h(如同java中定义接口)和NSObject+Fraction.m(如同java中接口实现类)

////NSObject+Fraction.h//Demo1////Created by lee on 14/10/28.//Copyright (c) 2014年 lee. All rights reserved.//#import<Foundation/Foundation.h>@interfaceFraction: NSObject

{intnumerator;intdenominator;

}-(void)PRint;-(void) setNumerator: (int) n;-(void) setDenominator: (int) d;-(void) result;@end

首先讲解@interface部分

1.Fraction类名,通常首字母大写

2.Fraction: NSObject 定义类来自何处即定义新类时必须指明它的父类

3.{...}中定义的为类成员,即实例变量

4.-(void) print;等定义处理该类的对象时将要用到的方法。

通用格式如下:

@interface<#classname#> : <#superclass#>{

memberDeclarations;

}

methodDeclarations;@end

5.实例方法 : -(void) setNumerator: (int) n;

5.1 开头的-号表明该方法为实例方法,还有一种为+号开头,表明该方法为类方法。

5.2(void)表示该方法的返回值类型。

5.3 setNumerator 表示该方法的名称。

5.4 (int) n 表示该方法需要的参数,一个整形的参数。

5.5 每一个方法均以;结束

6.方法声明如图所示:

////NSObject+Fraction.m//Demo1////Created by lee on 14/10/28.//Copyright (c) 2014年 lee. All rights reserved.//#import"NSObject+Fraction.h"@implementationFraction: NSObject-(void) print

{

NSLog(@"%i/%i", numerator, denominator);

}-(void) setNumerator:(int)n

{

numerator=n;

}-(void) setDenominator:(int)d

{

denominator=d;

}-(void) result

{intquotient = numerator/denominator;

NSLog(@"the quotient is %i :", quotient);

}@end

@implementation部分讲解

1.@interface中声明方法,@implementation中实现。

2.@implementation中类名与@interface中类名相同。

3.@implementation中包含@interface中指定的每个方法的代码。

////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"intmain(intargc,constchar*argv[]) {

@autoreleasepool {intquotient, 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];

}return0;

}

两种方法来实现两数的相除,主要讲解下一种即 NSLog(@"*** break ***");后面的部分,有C基础的能很快的明白

1.Fraction *myFraction;用法同C语言中指针类似,表示定义Fraction类型的对象。

2.对象建立后,需要为该存储对象分配存储空间,即myFraction = [Fraction alloc];

3.alloc获得类的新实例,使得对象的所有实例变量成初始化状态。

4.然后需要对对象进行实例化操作,即myFraction = [myFraction init];

5.init用语初始化类的实例变量。

6.上述方法简写如下:Fraction *myFraction = [[Fraction alloc] init];

7.[myFraction setNumerator: 10];调用方法存储实例变量。

运行结果如下:

2014-10-2900:52:37.980Demo1[2834:13881] The fractionis10/2the quotientis52014-10-2900:52:37.981Demo1[2834:13881] ***

break***2014-10-2900:52:37.981Demo1[2834:13881] The value of myFractionis:2014-10-2900:52:37.981Demo1[2834:13881]10/22014-10-2900:52:37.981Demo1[2834:13881] the quotientis5:

Program ended with exit code:0

注:1.Object-C中变量名称命名规则:名称必须以字母或下划线开头,之后可以是任何字母,下划线或者数字组合。

2.Object-C保留名不能作为变量名,如:int

3.Object-C中大小写字母是有区别的。如:sum和Sum和SUM是表示不同的变量。

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
© 2005- 王朝網路 版權所有 導航