设为首页 加入收藏

TOP

OC 多态
2017-10-13 10:33:53 】 浏览:8380
Tags:多态

OC 多态

多态的概念

  • 没有继承,就没有多态
  • 不同类的对象能够定义相同名称的方法
  • 当父类对象的指针或引用指向子类对象时,会进行动态监测,调用真实的方法
  • C++只有虚函数才能实现多态,OC中所有方法都可以

多态的局限性

父类类型的对象不能直接调用子类对象特有的方法,如果必须要调用,则必须将父类对象强制转换成子类对象

实例

//
//  ViewController.m
//  多态
//
//  Created by ma c on 16/5/11.
//  Copyright © 2016年 xubaoaichiyu. All rights reserved.
//

#import "ViewController.h"
#import "A.h"
#import "B.h"
#import "C.h"
@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    
    A * b = [[B alloc]init];
    A * c = [[C alloc]init];
    
    [b test];
    [c test];
    
}

@end
//
//  A.h
//  多态
//
//  Created by ma c on 16/5/11.
//  Copyright © 2016年 xubaoaichiyu. All rights reserved.
//

#import <Foundation/Foundation.h>

@interface A : NSObject

- (void)test;
@end
//
//  B.m
//  多态
//
//  Created by ma c on 16/5/11.
//  Copyright © 2016年 xubaoaichiyu. All rights reserved.
//

#import "B.h"

@implementation B

- (void)test{
    NSLog(@"B");
}
@end
//
//  C.m
//  多态
//
//  Created by ma c on 16/5/11.
//  Copyright © 2016年 xubaoaichiyu. All rights reserved.
//

#import "C.h"

@implementation C

- (void) test{
    
    NSLog(@"C");
}
@end

测试结果:
2016-05-11 19:01:57.353 多态[3204:1562722] B
2016-05-11 19:01:57.354 多态[3204:1562722] C


编程开发网
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇OC 入门 下一篇[转]setValue和setObject的区别

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

array(4) { ["type"]=> int(8) ["message"]=> string(24) "Undefined variable: jobs" ["file"]=> string(32) "/mnt/wp/cppentry/do/bencandy.php" ["line"]=> int(214) }