Objective C多态
面向对象的封装的三个基本特征是、继承和多态。
包是一组简单的数据结构和定义相关的操作在上面的其合并成一个类,继承1种亲子关系,子类能够拥有父类定的成员变量、属性以及方法。
多态就是指父类中定义的成员变量和方法被子类继承,父类对象能够表现出不同的行为。
OC中的方法都是虚方法。执行时不看指针类型,依据生成对象的类型决定被调用的方法。
以交通工具为例,定义父类为Vehicle,两个子类Bicycle、Car都继承自它,都拥有父类的成员变量name、属性height以及实例方法run
“Vehicle.h”
@interface Vehicle : NSObject
{
NSString *name;
}
@property(assign, nonatomic)int weight;
-(void)run;
@end
<span style="font-family:SimHei;">"Bicycle.h"</span>
@interface Bicycle : Vehicle
@end
"Car.h"
@interface Car : Vehicle
@end
分别实现Car和Bicycle中的run方法
@implementation Bicycle
-(void)run
{ name=@"自行车";
self.weight=100;
NSLog(@"%@ %d", name , self.weight);
}
@end
@implementation Car
-(void)run
{
name=@"汽车";
self.weight=2000;
NSLog(@"%@ %d", name, self.weight);
}
@end
在main.m中測试
#import <Foundation/Foundation.h>
#import "Vehicle.h"
#import "Car.h"
#import "Bicycle.h"
int main(int argc, const char * argv[])
{ @autoreleasepool {
Car *car=[[Car alloc]init]; Bicycle *bike=[[Bicycle alloc]init]; Vehicle *veh=car;
[car run];
veh = bike;
[veh run];
}
return 0;
}
执行结果为:汽车 2000
                      自行车 100
版权声明:本文博客原创文章。博客,未经同意,不得转载。
Objective C多态的更多相关文章
- Automake
		Automake是用来根据Makefile.am生成Makefile.in的工具 标准Makefile目标 'make all' Build programs, libraries, document ... 
- Objective 多态
		多态的特点 1.没有继承就没有多态 2.代码的体现:父类类型的指针指向子类对象 3.好处:如果函数方法参数中使用的是父类类型,则可以传入父类和子类对象,而不用再去定义多个函数来和相应的类进行匹配了. ... 
- 【iOS 开发】Objective - C 面向对象 - 方法 | 成员变量 | 隐藏封装 | KVC | KVO | 初始化 | 多态
		一. Objective-C 方法详解 1. 方法属性 (1) OC 方法传参机制 Object-C 方法传参机制 : OC 中得参数传递都是值传递, 传入参数的是参数的副本; -- 基本类型 (值传 ... 
- iOS完全自学手册——[三]Objective-C语言速成,利用Objective-C创建自己的对象
		1.前言 上一篇已经介绍了App Delegate.View Controller的基本概念,除此之外,分别利用storyboard和纯代码创建了第一个Xcode的工程,并对不同方式搭建项目进行了比较 ... 
- iOS开发核心语言Objective  C —— 全部知识点总结
		本分享是面向有意向从事iOS开发的伙伴及苹果产品的发烧友,亦或是已经从事了iOS的开发人员,想进一步提升者.假设您对iOS开发有极高的兴趣,能够与我一起探讨iOS开发.一起学习,共同进步.假设您是零基 ... 
- iOS开发核心语言Objective C —— 面向对象思维、setter和getter方法及点语法
		本分享是面向有意向从事iOS开发的伙伴们.或者已经从事了iOS的开发人员.假设您对iOS开发有极高的兴趣,能够与我一起探讨iOS开发.一起学习,共同进步.假设您是零基础,建议您先翻阅我之前分享的iOS ... 
- 第一章 熟悉Objective -C   编写高质量iOS与OS  X代码的52 个有效方法
		第一章 熟悉Objective -C 编写高质量iOS与OS X代码的52 个有效方法 第一条: 了解Objective-C 语言的起源 关键区别在于 :使用消息结构的语言,其运行时所应执行 ... 
- Java中的多态
		1.多态:具有表现多种形态的能力的特征 父类: public abstract class Animal {public abstract void Say();} 子类: public class ... 
- C# 工厂模式+虚方法(接口、抽象方法)实现多态
		面向对象语言的三大特征之一就是多态,听起来多态比较抽象,简而言之就是同一行为针对不同对象得到不同的结果,同一对象,在不同的环境下得到不同的状态. 实例说明: 业务需求:实现一个打开文件的控制台程序的d ... 
随机推荐
- JUnit实战(2) - JUnit核心(使用Suite来组合测试)
			创建Java Project项目:ch02-internals MasterTestSuite.java package com.manning.junitbook.ch02.internals; i ... 
- cocos2d-x3.0 windows 环境配置
			cocos2d-x3.0 windows 环境配置 参考Oo泡泡糖oO的CSDN博文 :http://blog.csdn.net/u010296979/article/details/24273393 ... 
- Webx相框:RequestContext详细说明
			RequestContext RequestContext它可以被看作是request和response飞度.多于RequestContext还可以串起来.喜欢Filter像链条. 每个外Reques ... 
- POI使用汇总
			POI它是apache下一步行为office有关格源工具.我们近期在使用这个框架实现Excel格式数据的导入和导出功能.这里进行一个使用总结.POI提供两种读写API模型:事件模型(eventmode ... 
- Lichee (六) 优化配置的微内核
			我们的分析<Lichee(二) 在sun4i_crane平台下的编译 >的时候.竟然没有一个步骤是在配置内核 make ARCH=arm menuconfig 细致的读过的代码的会发现,在 ... 
- HTTPS背后的加密算法(转)
			当你在浏览器的地址栏上输入https开头的网址后,浏览器和服务器之间会在接下来的几百毫秒内进行大量的通信.InfoQ的这篇文章对此有非常详细的描述.这些复杂的步骤的第一步,就是浏览器与服务器之间协商一 ... 
- Firefox firebug and xpath checker
			From http://blog.sina.com.cn/s/blog_5aefba9a0100csy8.html 
- Ubuntu中编译链接Opencv应用的简便方式
			安装完毕Opencv后,使用下面命令查 看编译/连接參数 pkg-config --cflags --libs opencv 可看到例如以下信息 -I/usr/include/opencv /usr ... 
- 多层次的Json字符串转化为对象
			using Arvato.CRM.DataTrans.ConsoleHost.Model;using System;using System.Collections.Generic;using Sys ... 
- Java有用的经验--Swing片
			Java有用经验总结--Swing篇 前言 本文前言部分为我的一些感想,假设你仅仅对本文介绍的Java有用技巧感兴趣,能够跳过前言直接看正文的内容. 本文的写作动机来源于近期接给人家帮忙写的一个小程序 ... 
