OC 多态
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 多态的更多相关文章
- OC——多态
书接上文,上文提到继承一个很大用途的是为了更好的实现多态,现在我们就来看看OC的多态. 多态:顾名思义就是好多种状态,以前学C#时候印象最深刻的例子是好多个类共同实现同一个接口,然后把这些类的对象都装 ...
- OC多态
要点: 1.多种形态,引用的多种形态对于一个引用变量,可以指向任何类的对象.对于一个父类的引用(类与类之间有一种继承关系),可以指向子类,也可以指向本类,指向的类型不同.当通过此引用向对象发送消息,调 ...
- 【iOS 开发】Objective - C 面向对象 - 方法 | 成员变量 | 隐藏封装 | KVC | KVO | 初始化 | 多态
一. Objective-C 方法详解 1. 方法属性 (1) OC 方法传参机制 Object-C 方法传参机制 : OC 中得参数传递都是值传递, 传入参数的是参数的副本; -- 基本类型 (值传 ...
- iPhone开发视频教程 Objective-C部分 (51课时)
第一.二章 OC基础语法 iPhone开发教程 第一章 OC基础语法 iPhone开发概述-必看(1.1)http://www.apkbus.com/android-102215-1-1.html ...
- (转载)iPhone开发视频教程 Objective-C部分 (51课时)
感谢好人的无私贡献!来源:http://www.cnblogs.com/aimeng/p/3370012.html 第一.二章 OC基础语法 iPhone开发教程 第一章 OC基础语法 i ...
- iPhone开发视频教程 Objective-C部分
第一.二章 OC基础语法 iPhone开发教程 第一章 OC基础语法 iPhone开发概述-必看 (1.1) http://www.apkbus.com/android-102215-1-1.ht ...
- OC基础--多态 及 三特性小练习
什么是多态 什么是多态: 多态就是某一类事物的多种形态 猫: 猫-->动物 狗: 狗-->动物 男人 : 男人 -->人 -->动物 女人 : 女人 -->人 --> ...
- OC的封装、继承与多态
面向对象有三大特征:封装.继承和多态. 一.封装 封装是将对象的状态信息隐藏在对象内部,不允许外部程序直接访问对象内部信息,而是通过该类所提供的方法来实现对内部信息的操作和访问.简而言之,信息隐藏,隐 ...
- 多态 oc c++ 与oc category
多态是函数调用的动态绑定技术: c++动态绑定依赖于this指针与虚函数表. 虚函数表的排序规则: 1)虚函数按照其声明顺序放于表中. 2)父类的虚函数在子类的虚函数前面. 3)如果子类重写了父类的虚 ...
随机推荐
- 用Qt写软件系列五:一个安全防护软件的制作(2)
引言 在上一篇中讲述了主窗体的创建和设计.主窗体的无边框效果.阴影效果.拖动事件处理.窗体美化等工作在前面的博客中早就涉及,因此上篇博文中并未花费过多笔墨.这一篇继续讲述工具箱(Tool Button ...
- 把DataTable转换为泛型List<T>或是JSON
在开发ASP.NET Web API或ASP.NET MVC时,我们从数据库得到的数据往往是DataSet或是DataTable.为了能让前端JQuery能方便使用至这些数据,我们需要把这些数据转换为 ...
- net发布的dll方法和类显示注释信息(字段说明信息)[图解]
自己发布的dll添加的另一个项目中突然没有字段说明信息了,给使用带来了很多的不便,原因是为了跨项目引用,所以导致不显示注释信息的,一下是解决这个问题的方法. 在要发布(被引用)的项目上右键 => ...
- css3很美的蟠桃动画
查看效果:http://hovertree.com/texiao/css3/26/ 源码下载:http://hovertree.com/h/bjaf/ndhxgfkn.htm 效果图如下: 代码如下: ...
- c++控制台程序实现定时器
#include "stdafx.h" #include <iostream> #include <Windows.h> using namespace s ...
- 不可或缺 Windows Native (12) - C++: 引用类型
[源码下载] 不可或缺 Windows Native (12) - C++: 引用类型 作者:webabcd 介绍不可或缺 Windows Native 之 C++ 引用类型 示例CppReferen ...
- jquery练习
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- 修复 XE8 FMX Windows 列印旋转文字问题
问题:XE8 Firemonkey Windows 无法列印旋转文字(与显示在视窗里的代码相同时) 适用:XE8 Windows 平台(其它平台测试没问题) 修复前效果: 修复后效果: 修复方法: 请 ...
- jsp页面样例及解析
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding= ...
- Python 第二模块学习总结
学习总结: 1.掌握对装饰器的用法 2.掌握生成器的用法 3.掌握迭代器的用法 4.熟悉Python内置函数 5.熟悉Python shutil/shelve/configparse/hashlib/ ...