objective c 中的继承和多态简单示意(二)

2023-11-11

holydancer原创,如需转载,请在显要位置注明:

转自holydancer的CSDN专栏,原文地址:http://blog.csdn.net/holydancer/article/details/7334377


OC中的继承和JAVA,C++都有相似之处,很容易理解,虽然不能多继承,但是有专门的方法和途径解决这个问题,今天只做单继承和多态的简单示范,新建一个Person类,包括.h和.m文件,然后Men类和Women类继承自该类,并重写了继承过来的cry方法,然后在main()方法中创建实例指向父类Person引用,简单多态后输出语句,具体结构如下:


Person.h代码如下:

[plain]  view plain  copy
  1. #import <Foundation/Foundation.h>  
  2.   
  3. @interface Person : NSObject  
  4. {  
  5.     int age;  
  6.     NSString *name;  
  7. }  
  8. -(void)setAge:(int)age setName:(NSString *)name;//age 和 name的set方法  
  9. -(void)cry;  //呆会儿子类继承该方法后要复写  
  10. //下面是age和name的get方法,不写get是因为OC中get方法一般以指针为参数;  
  11. -(int)age;  
  12. -(NSString *)name;  
  13. @end  

Person.m代码如下:

[cpp]  view plain  copy
  1. #import "Person.h"  
  2.   
  3. @implementation Person  
  4. -(void)setAge:(int)a setName:(NSString *)n    
  5. {  
  6.     name=n;           
  7.     age=a;  
  8. }  
  9. -(int)age      
  10. {                     
  11.     return age;  
  12. }  
  13. -(NSString *)name  
  14. {  
  15.     return name;  
  16. }  
  17. -(void)cry  
  18. {  
  19.     NSLog(@"是人都会哭");  
  20. }  
  21. @end  

接下来是men.h:


[plain]  view plain  copy
  1. #import "Person.h"  
  2.   
  3. @interface men : Person  
  4.   
  5. @end  

然后是men.m:

[plain]  view plain  copy
  1. #import "men.h"  
  2.   
  3. @implementation men  
  4. -(void)cry  
  5. {  
  6.     NSLog(@"男人就要哭得响亮");  
  7. }  
  8. @end  

women.h

[plain]  view plain  copy
  1. #import "Person.h"  
  2.   
  3. @interface women : Person  
  4.   
  5. @end  

women.m

[plain]  view plain  copy
  1. #import "women.h"  
  2.   
  3. @implementation women  
  4. -(void)cry  
  5. {  
  6.     NSLog(@"女人就是要哭得委婉");  
  7. }  
  8. @end  

最后在main()方法中进行测试:

[plain]  view plain  copy
  1. #import <Foundation/Foundation.h>  
  2. #import "Person.h"  
  3. #import "men.h"  
  4. #import "women.h"  
  5.   
  6. int main(int argc, const char * argv[])  
  7. {  
  8.   
  9.     @autoreleasepool {  
  10.         Person *person = [Person new];  
  11.         Person *man = [men new];//子类对象指向父类引用;  
  12.         Person *woman = [women new];  
  13.         [man setAge:23 setName:@"男人"];//子类对象使用继承来的方法;  
  14.         [woman setAge:21 setName:@"女人"];  
  15.         NSLog(@"我的名字是%@,我的年龄是%d",[man name],[man age]);  
  16.         NSLog(@"我的名字是%@,我的年龄是%d",[woman name],[woman age]);  
  17.         [person cry];//父类中的cry方法;  
  18.         [man cry];  //子类对象复写了父类的方法;  
  19.         [woman cry];  
  20.         
  21.     }  
  22.     return 0;  
  23. }  

最后得到以下输出结果:





本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

objective c 中的继承和多态简单示意(二) 的相关文章

随机推荐

  • python:根据一个列表对另外一个列表排序

    在使用python处理数据时可能会遇到根据列表A对列表B进行排序的问题 记录一下想到的两个方法 方法1 根据列表b中每个元素的下标来获取列表a中对应位置的元素 将其作为排序依据即可 import random a x for x in ra
  • JVM你知道多少?

    1 jvm的内存结构 方法区和堆是所有线程共享的内存区域 而java栈 本地方法栈和程序计数器是运行时线程私有的内存区域 1 Java堆 Heap 是Java虚拟机所管理的内存中最大的一块 Java堆是被所有线程共享的一块内存区域 在虚拟机
  • naive bayes java_Naive Bayes 朴素贝叶斯的JAVA代码实现

    最进写毕业论文找了下贝页斯的资料 这个文章讲的很好 转载下 链接http blog csdn net michael kong nju article details 12623557 comments 1 关于贝叶斯分类 bayes 是一
  • STM32—ADC详解入门(ADC读取烟雾传感器的值)

    目录 一 ADC是什么 二 ADC的性能指标 三 ADC特性 四 ADC通道 五 ADC转换顺序 六 ADC触发方式 七 ADC转化时间 八 ADC转化模式 九 实验 使用ADC读取烟雾传感器的值 1 配置 2 代码 一 ADC是什么 AD
  • MSYS2更换国内源

    今天安装了Msys64 但是Msys64使用的国外源实在太慢 必须更新为国内源 目前测试过国内最快是清华大学的源 我的安装路径为d msys64 为什么要安装在D盘 因为msys64需要不断更新数据和安装自己的软件 也就是说会占用越来越多的
  • 使用mnist数据集实现手写字体的识别

    1 MNIST是一个入门级的计算机视觉数据集 它包含各种手写数字图片 它也包含每一张图片对应的标签 告诉我们这个是数字几 该数据集包括60000行的训练数据集 mnist train 和10000行的测试数据集 mnist test 每一张
  • mysql索引左侧原则,你真的了解吗?

    前言 写这篇文章源自一位杠精同事提了个问题 左侧原则跟where条件顺序有无关系 我想了想 好像是有关系的 不敢确定 但是自己又懒得动手测试 于是发起ETC自动抬杠功能 强行杠了一拨 结果杠输了 接下来即是动手验证 预习执行计划 实践 咱们
  • Something about C

    What the hell How long since I touch with C What a pity I have to work with it now Global variable Better define a globa
  • c++中setw()与setfill()的用法详情

    c 中setw 与setfill 的用法详情 在C 中 setw int n 用来控制输出间隔 例如 cout lt lt s lt
  • 关于自搭网站XAMPP(三)MYSQL增删改查(水)

  • Ubuntu 18.04下载安装以及分区教程

    收藏一下写的超赞的博客 Ubuntu18 04安装教程 超详细的图文教程 安装Ubuntu Linux系统时硬盘分区最合理的方法ubuntu18 04分区设置 也安装过很多次ubuntu了 记录一下最重要的踩坑点 分区完成后会让选择安装启动
  • 算法之字符串匹配一

    目录 前言 BF算法 RK算法 总结 参考资料 前言 字符串匹配指的是一个短点的字符串与一个长点的字符串进行匹配 并确认短的字符串是否在长的字符串中存在 匹配算法有很多 本文介绍两种简单 容易理解的两种算法 BF算法和RK算法 BF算法 B
  • C语言版本数据结构03:顺序表+链表

    今天我们来学习数据结构的第一个顺序结构 顺序表和链表 1 线性表 线性表是我们要学的第一个结构 我们知道一串连续的数字或者字符想要在内存中存储可以用数组 但是我们又知道数组是静态的 那么如果我想要对这组数据进行增删查改呢 这就显现出线性表的
  • Mysql按数字大小排序String字段

    今天做项目的时候 遇到个小小的问题 在数据库中查询的时候 要用String类型的数字进行一下排序 结果是按照字符串排序来处理的 没有达到预想中的效果 于是先是想到将字符转成数字型的 在网上搜了一下 基本上都是这样做的 只不过很多人实现的方式
  • 内存检测工具Dr. Memory的使用

    Dr Memory是一个内存调试工具 它是一个开源免费的内存检测工具 它能够及时发现内存相关的编程错误 比如未初始化访问 内存非法访问 数组越界读 写 以及内存泄露等 它可以在Linux Windows Mac OS和Android操作系统
  • ngrok的使用(超详细)

    1 ngrok简介 百度百科 ngrok 是一个反向代理 通过在公共的端点和本地运行的 Web 服务器之间建立一个安全的通道 ngrok 可捕获和分析所有通道上的流量 便于后期分析和重放 啥玩意 1 其实说白了就是你写一个项目 在PC上完美
  • 微信小程序合法域名配置

    在微信小程序的开发过程中 当需要请求第三方网站数据时 各种教程就直接说调用wx request接口即可 但是当初学者自己用的时候就会出现问题 比如我们这里请求聚合数据的API 里边有不少免费的数据申请就可以使用 调用邮编查询的接口 getP
  • Java中的wait()与notify()/notifyAll()

    1 wait 与sleep yield 的不同 调用sleep 和yield 时 线程掌握的对象上的锁不会被释放 而调用wait 时 线程掌握的对象上的锁会被释放掉 这一点是需要注意的 也是有意义的 因为调用wait 会释放锁 所以在一个s
  • 按键从Linux到Android

    按键从Linux到Android 现在的普通按键也集成到Linux Input子系统中了 只需要把按键对应的IO端口配置好 按键就可以工作了 所以一般提供的BSP 或者叫作解决方案 中 已经完善了按键驱动 关键是快速的了解按键的映射 所以这
  • objective c 中的继承和多态简单示意(二)

    holydancer原创 如需转载 请在显要位置注明 转自holydancer的CSDN专栏 原文地址 http blog csdn net holydancer article details 7334377 OC中的继承和JAVA C