//
// Phone.h
// day13 #import <Foundation/Foundation.h> // 被继承的这个类我们称之为父类/ 超类
@interface Phone : NSObject
{
int _cpu;
}
// 打电话
- (void)signalWithNumber:(NSString *)number;
// 发短信
- (void)sendMessageWithNumber:(NSString *)number andContent:(NSString *)content;
+ (void)brand;
@end
//
// Phone.m
// day13 #import "Phone.h" @implementation Phone - (void)signalWithNumber:(NSString *)number
{
NSLog(@"利用手机打电话给%@,,,%i", number,self->_cpu);
} - (void)sendMessageWithNumber:(NSString *)number andContent:(NSString *)content
{
NSLog(@"利用手机发短信给%@, 内容是%@,,,,%i", number, content,_cpu);
} + (void)brand
{
NSLog(@"品牌");
}
@end
//
// Android.h
// day13 #import <Foundation/Foundation.h>
#import "Phone.h" // 继承了某个类的类我们称之为子类
@interface Android : Phone
- (void)setCpu:(int)cpu;
- (int)cpu;
@end
//
// Android.m
// day13 #import "Android.h" @implementation Android
- (void)setCpu:(int)cpu
{
_cpu = cpu;
}
- (int)cpu
{
return _cpu;
}
@end
//
// Iphone.h
// day13 #import <Foundation/Foundation.h>
#import "Phone.h" // 其实在类名的后面加上: NSObject, 就是让当前类继承NSObject类
// new方法就是继承过来的
// isa指针
// 继承的语法 @interface 类名 : 需要继承的类 //@interface Iphone : NSObject
@interface Iphone : Phone
{
//int _cpu;
int _cpu1; //不能跟父类属性同名
} // 打电话
- (void)signalWithNumber:(NSString *)number; // 发短信
- (void)sendMessageWithNumber:(NSString *)number andContent:(NSString *)content; - (void)setCpu:(int)cpu;
- (int)cpu;
@end
//
// Iphone.m
// day13 #import "Iphone.h" @implementation Iphone - (void)signalWithNumber:(NSString *)number
{
NSLog(@"利用iPhone手机打电话给%@", number);
} - (void)sendMessageWithNumber:(NSString *)number andContent:(NSString *)content
{
NSLog(@"利用iPhone手机发短信给%@, 内容是%@", number, content);
} - (void)setCpu:(int)cpu
{
_cpu = cpu;
} - (int)cpu
{
return _cpu;
}
@end
//
// main.m
// 继承基本概念 #import <Foundation/Foundation.h>
#import "Iphone.h"
#import "Android.h" int main(int argc, const char * argv[]) { /*
当前代码存在的问题: 重复代码太多
可以利用继承来解决当前重复代码太多的问题
只要A类继承了B类, 那么A类就拥有了B类的所有属性和方法(对象方法和类方法)
*/
Iphone *p = [Iphone new];
[p setCpu:];
[p signalWithNumber:@""];//利用手机打电话给1355443322,,,100 Android *a = [Android new];
[a setCpu:];
[a signalWithNumber:@""];//利用手机打电话给1868686886,,,10000 [Iphone brand];
[Android brand]; [p setCpu:];
NSLog(@"cpu = %i", [p cpu]);
return ;
}

oc19--继承1的更多相关文章

  1. javaScript的原型继承与多态性

    1.prototype 我们可以简单的把prototype看做是一个模版,新创建的自定义对象都是这个模版(prototype)的一个拷贝 (实际上不是拷贝而是链接,只不过这种链接是不可见,给人们的感觉 ...

  2. JavaScript的继承实现方式

    1.使用call或apply方法,将父对象的构造函数绑定在子对象上 function A(){ this.name = 'json'; } function B(){ A.call(this); } ...

  3. javascript中的继承与深度拷贝

    前言 本篇适合前端新人,下面开始...... 对于前端新手来说(比如博主),每当对js的对象做操作时,都是一种痛苦,原因就是在于对象的赋值是引用的传递,并非值的传递,虽然看上去后者赋值给了前者,他们就 ...

  4. 谈谈一些有趣的CSS题目(四)-- 从倒影说起,谈谈 CSS 继承 inherit

    开本系列,讨论一些有趣的 CSS 题目,抛开实用性而言,一些题目为了拓宽一下解决问题的思路,此外,涉及一些容易忽视的 CSS 细节. 解题不考虑兼容性,题目天马行空,想到什么说什么,如果解题中有你感觉 ...

  5. JS继承类相关试题

    题目一: //有关于原型继承的代码如下:function Person(name) {   this.name = name;}Person.prototype = {     getName : f ...

  6. JS继承之寄生类继承

    原型式继承 其原理就是借助原型,可以基于已有的对象创建新对象.节省了创建自定义类型这一步(虽然觉得这样没什么意义). 模型 function object(o){ function W(){ } W. ...

  7. JS继承之借用构造函数继承和组合继承

    根据少一点套路,多一点真诚这个原则,继续学习. 借用构造函数继承 在解决原型中包含引用类型值所带来问题的过程中,开发人员开始使用一种叫做借用构造函数(constructor stealing)的技术( ...

  8. JS继承之原型继承

     许多OO语言都支持两种继承方式:接口继承和实现继承.接口继承只继承方法签名,而实现继承则继承实际的方法.如前所述,由于函数没有签名,在ECMAScript中无法实现接口继承.ECMAScript只支 ...

  9. 深入浅出JavaScript之原型链&继承

    Javascript语言的继承机制,它没有"子类"和"父类"的概念,也没有"类"(class)和"实例"(instanc ...

  10. 如果你也会C#,那不妨了解下F#(7):面向对象编程之继承、接口和泛型

    前言 面向对象三大基本特性:封装.继承.多态.上一篇中介绍了类的定义,下面就了解下F#中继承和多态的使用吧.

随机推荐

  1. 页面中word文本框的编辑,两种方式

    大致效果图(对其中的功能可以增减): 实现方法1:调用js <link href="../../platform/js/kindeditor/themes/default/defaul ...

  2. 在mac上截屏的几种方式

    方法 1: 对屏幕的一部分进行截图 按下Command+Shift+4   方法 2: 对整个屏幕进行截图 按下Command+Shift+3   方法 3: 把截图保存到粘贴板 按下Command+ ...

  3. Percona Xtrabackup备份及恢复

    1. http://www.percona.com/software/percona-xtrabackup下载并安装 2. 全量备份  a.全量备份到制定目录            innobacku ...

  4. OpenCV:OpenCV目标检测Boost方法训练

    在古老的CNN方法出现以后,并不能适用于图像中目标检测.20世纪60年代,Hubel和Wiesel( 百度百科 )在研究猫脑皮层中用于局部敏感和方向选择的神经元时发现其独特的网络结构可以有效地降低反馈 ...

  5. beetl模板入门例子

    加入maven依赖 <dependency> <groupId>org.beetl</groupId> <artifactId>beetl-core&l ...

  6. Docker 数据卷重复挂载测试

    没想到一年没写博客了,这中间都是记在自己的笔记本上,大部分网上都有,这个好像没有,所以发上来吧! 本文是测试Docker容器(相同目录/父子目录)同时挂载到宿主机(同目录/不同目录)时的情况,废话少说 ...

  7. C#调用存储过程中事务级临时表返回DataTable列乱序解决办法

    string result = strSqlResult.Substring(3).Trim().Replace("\n", "").Replace(" ...

  8. inherit 关键字使得元素获取其父元素的计算值

    它可以应用于任何CSS属性,包括CSS简写 all. 对于继承属性,inherit 关键字只是增强了属性的默认行为,只有在重载(overload)其它规则的时候被使用.对于非继承属性,inherit ...

  9. eoLinker AMS 专业版V3.3发布:分享项目可以测试并选择分享内容等

    eoLinker AMS是集API文档管理.API自动化测试.开发协作三位一体的综合API开发管理平台,是中国最大的在线API管理平台.目前eoLinker AMS已经为来自全球的超过两万家企业托管超 ...

  10. PHP第一节课

    基础语法 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3 ...