您的位置:首页 > 其它

oc自学-继承

2015-09-07 12:37 162 查看

@interface ClassA: NSObject

{

int x;

}

-(void) initVar;

@end

@implementation ClassA

-(void) initVar 

{

x = 100;

}

@end

@interface ClassB: ClassA

-(void) printVar;

@end

@implementation ClassB

-(void) printVar

{

NSLog(@"x = %i",x);

}

@end

在自雷中使用实例变量,必须现在接口部分声明,而不是在实现部分声明。在实现部分声明和合成(synthesize)的实力变量是私有的,子类中并不能直接访问,需要明确定义或合成取值方法,才能访问实例变量的值。


找出正确的方法

 

通过继承来扩展:添加新方法


@class指令

#import <Foundation/Foundation.h>

@class XYPoint;

@interface Rectangle: NSObject

@property int width, height;

-(XYPoint *) origin;

-(void) setOrigin: (XYPoint *) pt;

-(void) setWidth: (int) w andHeight: (int) h;

-(int) area;

-(int) perimeter;

@end

@class XYPoint,因为编译器在遇到Rectangle定义的实力变量XYPoint时,必须了解XYPoint是什么。类名还会分别用在setORigin:和orgin方法的参数及返回类型声明。还有另外一个选择,可以导入头文件代替这条指令:

#import "XYPoint.h"

使用@class指令提高了效率,因为编译器不需要引入和处理整个XYPoint.h文件,如果要引用XYPoint类的方法,@class指令是不够的,因为编译器需要更多的消息。


具有对象的类


覆写方法

使用和父类相同的名称定义的方法代替或覆写了继承的定义,新方法必须具有相同的返回类型,并且参数的数目与覆写的方法相同。


抽象类

 不可使实例化

 iOS 的协议

c# 的 interface

c++ 的  abstract class 






内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: