Objective-C基础教程2(继承和复合)

Objective-C基础教程2(继承和复合),第1张

概述继承是is a XX,复合是 has a XX,在复合中,对象可以引用其他对象。 1,继承语法 下面是用于声明新类的语法: @interface Circle : NSObject 冒号后的标识符是需要继承的类。在Objective-C中,可以从非类中继承对象(非类是?TODO),但如果使用Cocoa,会希望从NSObject继承对象,因为NSObject提供了大量有用的特性,包括内存管理。和ja

继承是is a XX,复合是 has a XX,在复合中,对象可以引用其他对象。


1,继承语法

下面是用于声明新类的语法:

@interface Circle : NSObject

冒号后的标识符是需要继承的类。在Objective-C中,可以从非类中继承对象(非类是?Todo),但如果使用Cocoa,会希望从NSObject继承对象,因为NSObject提供了大量有用的特性,包括内存管理。和java的Object类很像,另外还有一个特点是相同的,只能继承一个。

一般子类会通过重写(overrIDe)继承方法。如Circle具有自己的draw方法,因此,我们说它重写了draw方法。


2,继承的工作机制

通用的原则,如果无法在对象类中找到相应的方法或者属性,就在该对象的超类中进行查找。

调用父类的方法,[super xxxx];


3,自定义NSLog()

通过NSLog()可以使用%@格式说明符来输出对象。NSLog()处理%@说明符时,它会询问参数列表中相应的对象以得到这个对象的描述。从技术上讲,就是NSLog()给这个对象发送描述信息,然后对象的description方法生成一个Nsstring并返回。之后NSLog()在其输出中包含这个字符串。我觉得应该是java中的toString()方法。

@implemention Engine- (Nsstring *) description{	return (@"I am an engine");}NSLog(@"%@",engine);


4,getter和setter

@interface Car : NSObject{	Engine *engine;}- (Engine *) engine;//get方法- (voID) setEngine: (Engine *) newEngine;//set方法@end//Car
存取方法,Cocoa有自己的惯例。

setter方法根据它所更改的属性的名称来命名,并加上前缀“set”。

getter方法则仅仅根据其返回的属性的名称命名。


get这个词在Cocoa中有着特殊的含义。如果get出现在Cocoa的方法名称中,就意味着这个方法会通过你当做参数传入的指针来返回数值。例如,NSData(Cocoa中的类,创建可存储任意字节序列的对象)中有一个getBytes:方法,它的参数就是用来存储字节的内存缓存区的地址。

总结

以上是内存溢出为你收集整理的Objective-C基础教程2(继承和复合)全部内容,希望文章能够帮你解决Objective-C基础教程2(继承和复合)所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1053841.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-25
下一篇 2022-05-25

发表评论

登录后才能评论

评论列表(0条)

保存