文档章节

第03天OC语言(09):继承其它特性

lyh2017iOS
 lyh2017iOS
发布于 2017/07/13 11:18
字数 930
阅读 3
收藏 0
点赞 0
评论 0
  • 不要等到明天,明天太遥远,今天就行动。

#####须读:看完该文章你能做什么?

知道继承的特性(调用方法顺序)

#####学习前:你必须会什么?(在这里我已经默认你具备C语言的基础了)

什么是继承 ######注:(小白直接上手)


#####一、本章笔记

 一.
  如果子类中 有父类中同名的方法,那么我们称之为方法重写
  注意: 继承中的方法调用顺序, 如果自己有 就调用自己的,如果自己没有调用父类的
  **方法的调用顺序, 先自己再父类, 如果父类中没有 再找爷爷类,如果爷爷类再没有 就找 爷爷的爸爸类
      如果一直找到 NSObject类没有找到, 那么就会报错
     Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[IPhone signalWithNumber:]: unrecognized selector sent to instance 0x1002000b0'
 二.
  在继承中除了 对象方法可以重写,类方法也可以重写
 三.
  注意 : 在继承中方法可以重写,但是属性(成员变量)不能重写

 四.
 继承:
    当B类 继承 A类, 那么B类 就拥有 A类所有的属性和方法(类方法/对象方法)
 优点:
     提高代码的复用性(重复的代码)
     可以让类与类之间产生关系,正是因为  继承让类与类之间 产生了关系 所以才有了多态
 缺点:
     耦合性太强(依赖性太强) 也就是说 比如有一天我的Phone类删掉了,那么其他的子类就不能使用了
 
 注意:
     不要以为继承可以提高代码的复用性, 以后但凡发现多个类当中 有重复代码 就抽取一个父类
     只有满足一定的条件 才能使用继承
     条件 : xxx 是 xxx / 某某某 is a 某某某
 学生 :
     姓名
     年龄
     数学成绩
     语文成绩
     英语成绩
 排行榜:
     数学成绩
     语文成绩
     英语成绩
 分数类:
     数学成绩
     语文成绩
     英语成绩

#####二、code ######main.m

#pragma mark 09-继承其它特性
#pragma mark - 代码
#import <Foundation/Foundation.h>
#pragma mark 类
#import "IPhone.h"
#pragma mark - main函数
int main(int argc, const char * argv[])
{
    IPhone *p  = [IPhone new];
    [p signalWithNumber:@"10010"];
    [IPhone brand];

    return 0;
}

######Phone

>>>.h
#import <Foundation/Foundation.h>
@interface Phone : NSObject
{
    int _cpu;
}
// 打电话
- (void)signalWithNumber:(NSString *)number;
// 发短信
- (void)sendMessageWithNumber:(NSString *)number andContent:(NSString *)content;
// 打印品牌信息
+ (void)brand;
@end
>>>.m
#import "Phone.h"

@implementation Phone
- (void)signalWithNumber:(NSString *)number
{
    NSLog(@"利用手机打电话给%@",number);
}
- (void)sendMessageWithNumber:(NSString *)number andContent:(NSString *)content
{
    NSLog(@"利用手机发短信给%@,内容是%@",number,content);
}
+ (void)brand
{
    NSLog(@"品牌");
}
@end

######iPhone

>>>.h
#import <Foundation/Foundation.h>
#import "Phone.h"

@interface IPhone : Phone
{
    // 注意 : 在继承中方法可以重写,但是属性(成员变量)不能重写
//    int _cpu; // duplicate member 'cpu'
}
- (void)setCpu:(int)cpu;
- (int)cpu;

// 打电话
// 如果子类中 有父类中同名的方法,那么我们称之为方法重写
// 注意: 继承中的方法调用顺序, 如果自己有 就调用自己的,如果自己没有调用父类的
// 方法的调用顺序, 先自己再父类, 如果父类中没有 再找爷爷类,如果爷爷类再没有 就找 爷爷的爸爸类
// 如果一直找到 NSObject类没有找到, 那么就会报错
//Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[IPhone signalWithNumber:]: unrecognized selector sent to instance 0x1002000b0'
- (void)signalWithNumber:(NSString *)number;

// 在继承中除了 对象方法可以重写,类方法也可以重写
+ (void)brand;

@end
>>>.m
#import "IPhone.h"

@implementation IPhone
- (void)setCpu:(int)cpu
{
    _cpu = cpu;
}
- (int)cpu
{
    return _cpu;
}
- (void)signalWithNumber:(NSString *)number
{
    NSLog(@"利用 iPhone打电话给%@",number);
}
+ (void)brand
{
    NSLog(@"iphone手机");
}
@end

######Android

>>>.h
#import <Foundation/Foundation.h>
#import "Phone.h"
@interface Android : Phone
- (void)setCpu:(int)cpu;
- (int)cpu;
@end
>>>.m
@implementation Android
- (void)setCpu:(int)cpu
{
    _cpu = cpu;
}
- (int)cpu
{
    return _cpu;
}

@end

image.png

image.png

© 著作权归作者所有

共有 人打赏支持
lyh2017iOS
粉丝 1
博文 354
码字总数 137380
作品 0
朝阳
JavaScript 30天每日效果图

JavaScript 30天每日效果图 在Github上看到了wesbos的一个Javascript30天挑战的repo,旨在使用纯JS来进行练习,不允许使用任何其他的库和框架,该挑战共30天,我会在这里复现这30天遇到的挑战...

黎跃春 ⋅ 2017/07/19 ⋅ 0

Objective-C基础语法规则教程

Objective-C基础语法规则教程 简介 Objective-C是一种简单的面向对象的计算机语言。Oobjective-C扩展了标准的ANSI C语言。类的语法和设计主要是基于Smalltalk,最早的面向对象编程语言之一。...

FelixSmile ⋅ 2016/09/18 ⋅ 0

Runtime运行时机制

想深入理解Objective-C这门动态语言就不得不深入理解下它的“动态”是如何实现的。早先拜读过《Effective Objective-C 2.0》就让我更深入的窥探到OC运行时特别之处,本文当中也有部分内容借鉴...

Mister志伟 ⋅ 2017/12/11 ⋅ 0

「Objective-C基础」三大特性:封装、继承、多态

我们都知道,面向对象程序设计中的类有三大特性:继承,封装,多态,这三大特性是学习类的时候,必须理解的问题,既是基础,更该给予重视。 一、封装(Encapsulation) 封装就是对类中的一些...

无忌不悔 ⋅ 2017/08/08 ⋅ 0

《Using Swift with Cocoa and Objective-C》总结

互用性 1>与Objective-C API交互 1.初始化 1)在OC中,初始化往往会有init、initWith字眼,但在swif却在这里都省略了,连分配内存的alloc,swift也会自动帮我们处理。 //Objective-CUITableVi...

Ethan-GOGO ⋅ 2015/10/29 ⋅ 0

Swift的一些翻译1:Swift Playgrounds

第二章 Swift Playgrounds 去做,玩的开心,享受游戏 -Michael Jordan 在WDC2014,苹果宣布所有的iOS设备都将开始使用一个新的编程语言叫做Swift.Swift被称作"快速,现代,安全,可交互的"编程语言...

zetan ⋅ 2015/12/03 ⋅ 0

iOS开发路线概述

由于博客迁移至www.coderyi.com,文章请看http://www.coderyi.com/archives/397 ,并且该文章做了很大的修改。 iOS系统以及iPhone的出来都要感谢乔布斯,一个完美主义者,从如此优秀的iOS系统...

flyicarus ⋅ 2014/06/20 ⋅ 2

Swift4.0基础知识回顾

简单介绍一下Swift Swift 语言由苹果公司在 2014 年推出,用来撰写 OS X 和 iOS 应用程序,Swift语言让应用开发更简单、更快、更稳定,确保最终应用有着更好的质量更多了解Swift可以去《The...

博行天下 ⋅ 2017/12/06 ⋅ 0

iOS-消息转发机制

前言 其他编程语言所说的函数调用,在oc中被称作为发送消息;消息转发的作用,开发者可以在找不到的方法的情况下,可以通过动态添加方法或者是消息转发,确定本次发送消息是否成功,通过这样...

麦兜卖鱼丸 ⋅ 2016/03/27 ⋅ 0

简单说说面试

本文包括: OC的面向对象 运行时Runtime 运行循环RunLoop 事件响应链 引用计数 生命周期 与其他语言的区别 Objective-C 简称OC(下面以此代称),是在C语言的基础上,增加了一层最小的面向对...

天机 ⋅ 2016/08/17 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

【elasticsearch】 随笔 Date datatype

一。时间类型的本质 首先json是没有时间类型的,对于es来说,时间类型的标示可以是下面三种情况 1.一个时间格式的字符串,如:"2014-11-27T08:05:32Z","2015-01-01" or "2015/01/01 12:10:3...

xiaomin0322 ⋅ 7分钟前 ⋅ 0

阿里云资源编排ROS使用教程

阿里云资源编排ROS详细内容: 阿里云资源编排ROS使用教程 资源编排(Resource Orchestration)是一种简单易用的云计算资源管理和自动化运维服务。用户通过模板描述多个云计算资源的依赖关系、...

mcy0425 ⋅ 10分钟前 ⋅ 0

适配器设计模式

1、适配器模式 把一个类的接口变换成客户端所期待的另一种接口 使原本因接口不匹配而无法在一起工作的两个类能够在一起工作 分为类的适配器模式和对象的适配器模式 2、类适配器模式 类的适配...

职业搬砖20年 ⋅ 14分钟前 ⋅ 0

npm操作报错 _stream_writable.js:61

有一天 不知道什么原因(估计和node的版本有关),无论你做什么npm的操作 都会报错/usr/local/lib/node_modules/npm/node_modules/readable-stream/lib/_stream_writable.js:61 这时候只要执...

lilugirl ⋅ 17分钟前 ⋅ 0

Eclipse安装插件的几种方式

Eclipse魅力之一就是支持可扩展的插件,来丰富自身的功能,这种方式也是建立在开源思想之上的。具体使用什么方式去安装插件,要看我们拿到的是什么。 1. 拿到的是一串URL,如http://subclips...

GordonNemo ⋅ 20分钟前 ⋅ 0

div图片叠加

css实现代码如下: <div style="position: relative;"><!--这个层为外面的父层,需设置相对位置样式--> <div style="position: absolute;"><!--子层,需设置绝对位置样式--> <i......

niithub ⋅ 21分钟前 ⋅ 0

作用域slot

如果父组件需要使用子组件中的内容怎么办,比如父组件需要控制子组件的显示 <div id="root"><child><template slot-scope="props"><h1>{{props.item}} <div>编辑</div></h1><......

金于虎 ⋅ 24分钟前 ⋅ 1

HongHu commonservice-eureka 项目构建过程

上一篇我们回顾了关于 spring cloud eureka的相关基础知识,现在我们针对于HongHu cloud的eureka项目做以下构建,整个构建的过程很简单,我会将每一步都构建过程记录下来,希望可以帮助到大家...

明理萝 ⋅ 27分钟前 ⋅ 1

xml和对象的相互转化

@Data//setter和getter方法,toString和equals,hashcode方法@EqualsAndHashCode//代表重写equals和hashcode方法@XmlAccessorType(XmlAccessType.FIELD)public class Classroom {@X......

拐美人 ⋅ 27分钟前 ⋅ 0

tableView cell的高度 分组头部尾部的高度 自适应

@property (nonatomic) CGFloat rowHeight; // default is UITableViewAutomaticDimension@property (nonatomic) CGFloat sectionHeaderHeight; // default is UITableViewA......

娜一片蓝色星海 ⋅ 28分钟前 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部