Centos系统下载大全 | Redhat系统下载大全 | Windows2012系统下载大全 | Windows2008系统下载大全| CMS教程 | 网站地图 51运维网-专注Linux/Unix系统安全运维!
当前位置:51运维网 > 编程 > Objective-C > 正文

Objective-C 多态性

时间:2014-08-20 21:46 来源:未知 作者:www.51ou.com 阅读:

多态是指具有多种形式。通常情况下,多态发生时,有一个类层次结构和继承关系。

Objective-C的多态是指一个成员函数调用会导致执行不同的功能,根据调用函数的对象的类型。

考虑这个例子中,我们有一类形状,提供了基本的接口,为所有的形状。Square 和Rectangle 来自基类Shape。

以下方法printArea是要显示 OOP 多态性特点。

#import <Foundation/Foundation.h>

@interface Shape : NSObject

{
    CGFloat area;
}

- (void)printArea;

@end

@implementation Shape

- (void)printArea{
    NSLog(@"The area is %f", area);
}

@end


@interface Square : Shape
{
    CGFloat length;
}

- (id)initWithSide:(CGFloat)side;

- (void)calculateArea;

@end

@implementation Square

- (id)initWithSide:(CGFloat)side{
    length = side;
    return self;
}

- (void)calculateArea{
    area = length * length;
}

- (void)printArea{
    NSLog(@"The area of square is %f", area);
}

@end

@interface Rectangle : Shape
{
    CGFloat length;
    CGFloat breadth;
}

- (id)initWithLength:(CGFloat)rLength andBreadth:(CGFloat)rBreadth;


@end

@implementation Rectangle

- (id)initWithLength:(CGFloat)rLength andBreadth:(CGFloat)rBreadth{
    length = rLength;
    breadth = rBreadth;
    return self;
}

- (void)calculateArea{
    area = length * breadth;
}

@end


int main(int argc, const char * argv[])
{
    NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
    Square *square = [[Square alloc]initWithSide:10.0];
    [square calculateArea];
    [square printArea];
    Rectangle *rect = [[Rectangle alloc]
    initWithLength:10.0 andBreadth:5.0];
    [rect calculateArea];
    [rect printArea];        
    [pool drain];
    return 0;
}
  

上面的代码编译和执行时,它会产生以下结果:

2013-09-22 21:21:50.785 Polymorphism[358:303] The area of square is 100.000000
2013-09-22 21:21:50.786 Polymorphism[358:303] The area is 50.000000 

printArea方法的基类上是可用,在上面的例子中,无论是在基类中的方法还是执行派生类。请注意Objective-C中我们不能访问父类printArea方法,在这种情况下,方法是在派生类中实现的。

多态性处理方法基类和派生类的方法的基础上实施的两个类之间的切换。

感谢您对【51运维网 http://www.51ou.com/】的支持,我们为您免费提供《Objective-C 多态性》技术文章,《Objective-C 多态性》详细使用和说明,有时《Objective-C 多态性》可能不完善、敬请谅解!如果《Objective-C 多态性》有错误请给我们留言,我们将尽快修复文章错误,如果您觉得本站不错,请分享给周围的朋友!谢谢!

顶一下
(0)
0%
踩一下
(0)
0%
推荐内容
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
验证码:点击我更换图片