ios开发之-继承的实现运用
//
// main.m
// 继承
// // #import <Foundation/Foundation.h>
#import "Animal.h"
#import "Cat.h"
#import "Dog.h"
#import "FeedMan.h" int main(int argc, const char * argv[])
{ // Animal * animal = [Animal new];
//
// [animal eat];
//
// [animal sleep]; // //忘记引入头文件
// Animal * cat =[[Cat alloc]init];
//
// [cat eat]; // Cat * cat = [[Cat alloc]init];
//
// [cat catchMouse];
//
// Dog * dog = [[Dog alloc]init];
//
// [dog bark];
// //父类指针保存子类对象。如何调用子类对象的方法? // Animal * animal_cat = [[Cat alloc]init];
//
// FeedMan * man = [[FeedMan alloc]init];
//
// [man showName:animal_cat]; //[animal_cat eat]; // [animal_cat setName:@"Hello Cat"]; Animal * animal_dog = [[Dog alloc]init]; FeedMan * man = [[FeedMan alloc]init]; [man showName:animal_dog]; [man FeedAnimal:animal_dog]; //子类调用父类的方法,如何实现方法的不同性? return 0;
}
//
// FeedMan.h
// 继承
// #import "Animal.h" @interface FeedMan : NSObject -(void)showName:(Animal *)animal; -(void)FeedAnimal:(Animal *)animal;
@end
//
// FeedMan.m
// 继承 #import "FeedMan.h"
#import "Dog.h"
#import "Cat.h" @implementation FeedMan -(void)FeedAnimal:(Animal *)animal
{
if ([animal isKindOfClass:[Dog class]] ) { Dog * dog = (Dog *)animal;
[dog eat];
}
} -(void)showName:(Animal *)animal
{
//能够动态的检測动物的类型用到的一个类?
if([animal isKindOfClass:[Dog class]])
{
//须要强制类型转换
Dog * dog = (Dog *)animal;
[dog bark];
}
else if ([animal isKindOfClass:[Cat class]])
{
Cat * cat = (Cat *)animal;
[cat catchMouse];
} } @end
//
// Animal.h
// 继承 #import <Foundation/Foundation.h> @interface Animal : NSObject
{
NSString * _name; int _age;
} @property NSString * name;
@property int age; -(void)eat; -(void)sleep; -(void)showAge; @end
//
// Animal.m
// 继承
// #import "Animal.h" @implementation Animal -(void)eat
{
NSLog(@"动物吃东西");
} -(void)sleep
{
NSLog(@"动物睡觉了");
} -(void)showAge
{
NSLog(@"小动物的年龄");
}
@end
//
// Dog.h
// 继承
// #import "Animal.h" @interface Dog : Animal
{ } -(void)bark;
-(void)eat; @end
//
// Dog.m
// 继承
// #import "Dog.h" @implementation Dog -(void)bark
{
NSLog(@"小狗汪汪叫");
}
-(void)eat
{
NSLog(@"小狗吃东西");
} @end
//
// Cat.h
// 继承 #import "Animal.h" @interface Cat : Animal
{ }
-(void)catchMouse; -(void)eat;
@end
//
// Cat.m
// 继承
// #import "Cat.h" @implementation Cat
{ } -(void)catchMouse
{
NSLog(@"猫咪会捉老鼠! ");
}
-(void)eat
{
NSLog(@"小猫吃小鱼");
}
@end
ios开发之-继承的实现运用的更多相关文章
- iOS开发系列--Swift语言
概述 Swift是苹果2014年推出的全新的编程语言,它继承了C语言.ObjC的特性,且克服了C语言的兼容性问题.Swift发展过程中不仅保留了ObjC很多语法特性,它也借鉴了多种现代化语言的特点,在 ...
- iOS开发系列--打造自己的“美图秀秀”
--绘图与滤镜全面解析 概述 在iOS中可以很容易的开发出绚丽的界面效果,一方面得益于成功系统的设计,另一方面得益于它强大的开发框架.今天我们将围绕iOS中两大图形.图像绘图框架进行介绍:Quartz ...
- 总结iOS开发中的断点续传那些事儿
前言 断点续传概述 断点续传就是从文件赏赐中断的地方重新开始下载或者上传数据,而不是从头文件开始.当下载大文件的时候,如果没有实现断点续传功能,那么每次出现异常或者用户主动的暂停,都会从头下载,这样很 ...
- iOS开发系列--App扩展开发
概述 从iOS 8 开始Apple引入了扩展(Extension)用于增强系统应用服务和应用之间的交互.它的出现让自定义键盘.系统分享集成等这些依靠系统服务的开发变成了可能.WWDC 2016上众多更 ...
- iOS开发系列--Swift进阶
概述 上一篇文章<iOS开发系列--Swift语言>中对Swift的语法特点以及它和C.ObjC等其他语言的用法区别进行了介绍.当然,这只是Swift的入门基础,但是仅仅了解这些对于使用S ...
- iOS开发系列--通讯录、蓝牙、内购、GameCenter、iCloud、Passbook系统服务开发汇总
--系统应用与系统服务 iOS开发过程中有时候难免会使用iOS内置的一些应用软件和服务,例如QQ通讯录.微信电话本会使用iOS的通讯录,一些第三方软件会在应用内发送短信等.今天将和大家一起学习如何使用 ...
- iOS开发系列--地图与定位
概览 现在很多社交.电商.团购应用都引入了地图和定位功能,似乎地图功能不再是地图应用和导航应用所特有的.的确,有了地图和定位功能确实让我们的生活更加丰富多彩,极大的改变了我们的生活方式.例如你到了一个 ...
- iOS开发系列--数据存取
概览 在iOS开发中数据存储的方式可以归纳为两类:一类是存储为文件,另一类是存储到数据库.例如前面IOS开发系列-Objective-C之Foundation框架的文章中提到归档.plist文件存储, ...
- 【IOS开发笔记03-视图相关】简单计算器的实现
UIView 经过前几天的快速学习,我们初步了解的IOS开发的一些知识,中间因为拉的太急,忽略了很多基础知识点,这些知识点单独拿出来学习太过枯燥,我们在今后的项目中再逐步补齐,今天我们来学习APP视图 ...
随机推荐
- 【BZOJ 3482】 3482: [COCI2013]hiperprostor (dij+凸包)
3482: [COCI2013]hiperprostor Time Limit: 20 Sec Memory Limit: 256 MBSubmit: 277 Solved: 81 Descrip ...
- manacher算法求最长回文子序列
一:背景 给定一个字符串,求出其最长回文子串.例如: s="abcd",最长回文长度为 1: s="ababa",最长回文长度为 5: s="abcc ...
- [CCC 2018] 平衡树
题面在这里! 根据题目描述就可以直接模拟出一个暴力. 如果把前 n^(1/2) 的树的方案数先一遍 O(n^(3/4)) 暴力预处理出来(其实复杂度并到不了这个级别),然后把n带进来直接暴力算就行了. ...
- IndiaHacks 2016 - Online Edition (Div. 1 + Div. 2) A. Bear and Three Balls 水题
A. Bear and Three Balls 题目连接: http://www.codeforces.com/contest/653/problem/A Description Limak is a ...
- 为什么要使用netty
选择Netty的理由在开始本节之前,我先讲一个亲身经历的故事:曾经有两个项目组同时用到了NIO编程技术,一个项目组选择自己开发NIO服务端,直接使用JDK原生的API,结果2个多月过去了,他们的NIO ...
- shell 快速移动,快捷操作
ctr+h 往后删除一字符 ctr+d 往前删除一字符 ctr+b 光标往前 ctr+f 往后ctr+u 删除到最前 ctr+K删除到最后ctr+a 光标到最前 ctr+e 光标到最后ctr+p 往上 ...
- 使用Win2D在UWP程序中2D绘图(一)
在新的Windows UWP程序中,引入了一个新的API库: Win2D.它是一个d2d的封装,可以直接使用C#来快速实现高效2D绘图了.这个API虽然在Win8.1时代就开始着手开发了,但最近才完善 ...
- POJ 3384 Feng Shui (半平面交)
Feng Shui Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 3743 Accepted: 1150 Speci ...
- 【张宴】PHP在金山游戏运营中的应用
PPT下载地址1(国外服务器):http://blog.s135.com/attachment/201105/2011phptc_zy.zip PPT下载地址2(国内服务器):http://ishar ...
- Small tips of APP H5 page
在开发日常落地页的时候,每当碰到一些很酷炫的宣传图用css实现很复杂且耗时的时候,一般采取切图然后将其放在页面中,在这个过程中发现<img/>标签中图片下方会有一行小空白,影响了与后一部分 ...