接下来我们看一下ObjC中的另一个标示部分……
@implementation 部分的一般格式
@implementation NewClassName
methodDefinitions;
@end
//NewClassName表示的名称和@interface 部分的类名相同
看一个简单的例子:
//***************************
//Fraction.h 文件
@import <Foundation/Foundation.h>
@interface Fraction : NSObject
{
int numerator;
int denominator;
]
-(void) print;
-(void) setNumberator : (int) n;
-(void) setDenominator : (int) d;
@end
//Fraction.m 实现文件
@implementation Fraction
-(void)print
{
NSLog(@"%i/%i",numerator,denominator);
}
-(void)setNumberator :(int)n
{
numerator = n;
}
-(void)setDenominator :(int)d
{
denominator = d;
}
@end
//***********************************************
对程序就不分析了,不理解的地方请查看相关资料。
下来我们看一下对象的获取。
Fraction *myFraction = [[Fraction alloc] init];
获取对象的实例并初始化了其实例变量(可以这样理解:将alloc消息发送给Fraction类请求创建一个新实例,然后向新创建的实例对象发送init消息来进行初始化对象)。
另一种方法:
Fraction *myFraction = [Fraction new];//这种方法一般不使用,可作为了解
对象调用的方法: [myFraction setNumerator : 1];
使用完后要释放Fraction对象的方法:[myFraction release];
注:创建一个新的对象,都要请求分配内存,在完成该对象的操作后,必须释放其所用的内存空间。(Object-c的内核是C语言的,并基于C语言实现OOP的一些特性。Object-c是对C语言的扩展,这和C++的前身Better-c有很大的相似之处,Object-c的新版本里实现了和Java类似的垃圾回收机制,但基于iphone平台的资源限制,iphone平台并不支持垃圾回收机制。)
外部要访问实例变量需要通过类的方法来检索,不能直接访问。
示例:
//******************
//Rectangle.h 文件
@interface Rectangle : NSObject
{
int width;
int height;
}
@property int width, height;
-(int)area;
-(int)perimeter;
-(void)setWidth:(int)w andHeight:(int)h;
@end
//Recangle.m
@import "Rectangle.h"
@implementation Rectangle
@synthesize width, height;
-(void)setWidht:(int)w andHeight(int)h
{
widht = w;
height = h;
}
-(int)area
{
return widht * height;
}
-(int)perimeter
{
return (width + height) *2
}
@end
//Square.m
#import"Rectangle.h"
@interface Square :Rectangle
-(void)setSide :(int) s;
-(int)side;
@end
//Square.m
@import "Square.h"
@implementation Square :Rectangle
-(void)setSide :(int) s
{
[self setWidth : s andHeight: s]
}
-(int) side
{
return width;
}
@end
//***********************
self关键字是用来指明对象是当前方法的接受者。
例如下来的这个例子(正方形)的方法实现:
-(void)setSide : (int) s
{
[self setWidth: s andHeight : s]
}
利用其父类的setWidth:andHeight:方法来实现的。
调用消息的类可以不知道如何响应这个消息的。如果不知道如何处理这个消息,它会自动的将这个消息转给父类,还不行就转给父类的父类,都没有找到就会报错。
分享到:
相关推荐
Objective-C 基础语法 Objective-C 基础语法
本书结合理论知识与示例程序,全面而系统地讲述Objective-C编程的相关内容,包括Objective-C在C的基础上引入的特性和Cocoa工具包的功能及其中的框架,以及继承、复合、源文件组织等众多重要的面向对象编程技术。...
Objective-C语言将决定尽可能的从编译和链接时推迟到运行时。只要有可能,Objective-C总是使用...本文档将具体介绍NSObject类以及Objective-C程序是如何和运行时系统交互的。特别地,本文档还给出来怎样在运行时动态地加
《objective-c程序设计》通过大量的实例系统地介绍了objective-c语言的基本概念、语法规则、框架、类库及开发环境。读者在阅读《objective-c程序设计》后,可以掌握objective-c语言的基本内容,并进行实际的iphone/...
本书结合理论知识与示例程序,全面而系统地讲述Objective-C编程的相关内容,包括Objective-C在C的基础上引入的特性和Cocoa工具包的功能及其中的框架,以及继承、复合、源文件组织等众多重要的面向对象编程技术。...
Objective-C基础教程(入门教程).pdf
资源里面包含Objective-C 2.0程序设计 原书中文版第2版及代码,还包含Effective Objective-C 2.0英文版完整的电子书
语法基础——Objective-C语法基础.pdf
《Objective-C 程序设计(第4版)》作者假设读者没有面向对象程序语言或者C语言(Objective-C基础)编程经验,因此,初学者和有经验的程序员都可以使用这本《Objective-C 程序设计(第4版)》学习Objective-C。...
本书结合理论知识与示例程序,全面而系统地讲述Objective-C编程的相关内容,包括Objective-C在C的基础上引入的特性和Cocoa工具包的功能及其中的框架,以及继承、复合、源文件组织等众多重要的面向对象编程技术。...
Objective-C基础教程:1天玩转Objective-C语法
Objective-C 基础语法学习项目
《Objective-C基础教程》结合理论知识与示例程序,全面而系统地讲述Objective-C编程的相关内容,包括Objective-C在C的基础上引入的特性和Cocoa工具包的功能及其中的框架,以及继承、复合、源文件组织等众多重要的...
这是一个基于Objective-C语言的基础案例集 旨在用于给初学者快速了解Objective-C语言的语法 .zip
《Objective-C基础教程》结合理论知识与示例程序,全面而系统地讲述Objective-C编程的相关内容,包括Objective-C在C的基础上引入的特性和Cocoa工具包的功能及其中的框架,以及继承、复合、源文件组织等众多重要的...
资源名称:Objective-C基础教程(第2版) 资源截图在: 资源太大,传百度网盘了,链接在附件中,有需要的同学自取。
通过学习Objective-C的基本语法、类和对象、控制流程和方法等内容,你将能够编写简单的Objective-C程序并逐渐掌握更复杂的概念。继续学习和实践,你将能够开发各种类型的应用程序,并为用户提供出色的体验。祝你在...
大学作业——基于objective-c语言的小程序
Objective-C语言的许多决策可以在编译和运行时执行。只要有可能,它是动态的。这意味着Objective-C语言不仅需要一个编译器,还需要一个运行时系统来执行编译的代码。Runtime系统是一种用于Objective-C语言的操作系统...