文档章节

第03天OC语言(10):super关键字

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

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

super是做什么的

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

适合所有人,不需要懂的什么 ######注:(小白直接上手)


#####一、本章笔记

 一.
    只需要利用super 给 父类的方法 发送一个消息, 那么系统就会自动调用父类的方法
    如果以后想在 子类中调用 父类的方法 可以使用super
    如果想在给 父类方法 进行扩展的同时 保留父类的方法, 那么可以使用super调用父类同名的方法
二.
    super 在类方法中 , 一定会调用父类的类方法
    super 在对象方法中, 一定会调用父类的对象方法
    可以利用super 在任意方法中 调用 父类的方法

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

#pragma mark 10-super关键字

#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 test];
    [IPhone carameWithFlahlightStatus:kFlahlightStatusOpen];
    return 0;
}

######Phone

>>>.h
#import <Foundation/Foundation.h>
typedef enum
{
    kFlahlightStatusOpen,
    kFlahlightStatusClose
}FlahlightStatus;
@interface Phone : NSObject
//根据闪光灯的状态拍照
+ (void)carameWithFlahlightStatus:(FlahlightStatus)status;
- (void)carameWithFlahlightStatus:(FlahlightStatus)status;

// 打开闪光灯
+ (void)openFlashlight;
// 关闭闪光灯
+ (void)closeFlashlight;
@end

>>>.m
#import "Phone.h"

@implementation Phone
- (void)carameWithFlahlightStatus:(FlahlightStatus)status
{
    NSLog(@"-");
}
+ (void)carameWithFlahlightStatus:(FlahlightStatus)status
{
    if (status == kFlahlightStatusOpen)
    {
        [self openFlashlight];
    }
    else
    {
        [self closeFlashlight];
    }
    
    NSLog(@"拍照");
}

// 打开闪光灯
+ (void)openFlashlight
{
    NSLog(@"打开闪光灯");
    
}
// 关闭闪光灯
+ (void)closeFlashlight
{
    NSLog(@"关闭闪光灯");
    
}
@end

######IPhone

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

@interface IPhone : Phone
+ (void)carameWithFlahlightStatus:(FlahlightStatus)status;
- (void)test;
@end

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

@implementation IPhone


+ (void)carameWithFlahlightStatus:(FlahlightStatus)status
{
    NSLog(@"聚焦");
    NSLog(@"t调光");
    NSLog(@"人脸识别");
    
    // 由于以下代码 和 父类的一模一样, 所以只需要调用父类写好的代码即可
    /*
    if (status == kFlahlightStatusOpen)
    {
        [self openFlashlight];
    }
    else
    {
        [self closeFlashlight];
    }
    
    NSLog(@"拍照");
     */
    // [self carameWithFlahlightStatus:status]; // 引发死循环
    
    // 只需要利用super 给 父类的方法 发送一个消息, 那么系统就会自动调用父类的方法
    // 如果以后想在 子类中调用 父类的方法 可以使用super
    // 如果想在给 父类方法 进行扩展的同时 保留父类的方法, 那么可以使用super调用父类同名的方法
    [super carameWithFlahlightStatus:status];
}

- (void)test
{
    /*
     super 在类方法中 , 一定会调用父类的类方法
     super 在对象方法中, 一定会调用父类的对象方法
     可以利用super 在任意方法中 调用 父类的方法
     */
    [super carameWithFlahlightStatus:kFlahlightStatusOpen];
}
@end

######Android

>>>.h
#import <Foundation/Foundation.h>
#import "Phone.h"
@interface Android : Phone

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

@implementation Android


@end

© 著作权归作者所有

共有 人打赏支持
lyh2017iOS
粉丝 1
博文 354
码字总数 137380
作品 0
朝阳
Native code support (Native Code(C和C++)支持)

1. WP 8和Win 8之间共享native代码 通过 Windows 运行时组件,可以在 Windows 应用商店和 Windows Phone 应用程序之间共享Native coad。由于windows phone 8和Windows 8没有共享所有的Windo...

失足处男的倒霉孩子 ⋅ 2013/12/26 ⋅ 0

【iOS】Swift类与结构、存储属性、计算属性、函数与方法、附属脚本等

写了12个Person来复习,不过完成同样的代码需要敲键盘的次数相比OC确实少了很多,这很多应该归功于Swift中不写分号,以及少了OC中的中括号。 一、类与结构体 两者在Swift中差不了多少了 类与...

xn4545945 ⋅ 2014/09/16 ⋅ 0

[super class]与[self class]、isKindOfClass与isMemberOfClass

面试题一 在项目中新建Person类继承NSObject,在Person类中打印 打印结果分别是什么? 源码分析 回答这个面试题之前我们需要先弄懂两点: •class与superClass方法 •super关键字 class方法 ...

coderLZ ⋅ 06/01 ⋅ 0

dynamic动态分发,unsafeBitCast,自动调用的闭包-设置时,会设置一个KVO监听

//MARK: - 主题更改时,自动执行 extension NSObject { fileprivate struct AssociatedKeys { static var thmemChanged = "thmemChanged" } /// 当前主题更改时、第一次设置时 自动调用的闭包...

iOS技术者 ⋅ 2017/05/01 ⋅ 0

Object-C基础-03-点语法

前言 在Java中,我们可以通过"对象名.成员变量名"来访问对象的公共成员变量,这个就称为"点语法"。比如: 1.在Student类的第2行定义了一个公共的成员变量age 1 public class Student {2 pub...

Corwien ⋅ 2016/03/17 ⋅ 0

Object-C基础-01-概述

回到顶部 前言 目前来说,Objective-C(简称OC)是iOS开发的核心语言,在开发过程中也会配合着使用C语言、C++,OC主要负责UI界面,C语言、C++可用于图形处理。近来,流传Ruby、C#也可以开发iOS...

Corwien ⋅ 2016/03/16 ⋅ 0

一、Objective-C概述

说明:这个Objective-C专题,是学习iOS开发的前奏,也为了让有面向对象语言开发经验的程序员,能够快速上手Objective-C。如果你还没有编程经验,或者对Objective-C、iOS开发不感兴趣,请忽略...

长平狐 ⋅ 2013/03/28 ⋅ 0

OC语言自学《九》---- OC(面向对象)

定义类和创建对象 创建类 使用@interface 关键字创建类,并且使类继承NSObject @interface负责声明、@implementation负责实现 函数和方法的区别 方法 必须以减号或加号开头 减号开头的是对象...

罗眯眯 ⋅ 2014/04/05 ⋅ 0

Swift2.0与OC混编实验--动态库(一)

完整的Demo下载 做了以下几个实验 验证Swift和OC的项目可以使用任意语言开发的动态库 1、创建了一个Swift语言的动态库 2、创建了一个OC语言的动态库 3、创建了一个SwiftApp项目,在项目中同时...

泊竹 ⋅ 2016/01/17 ⋅ 0

Objective C基础与提高视频课程(一)

腾讯视频课程: 第一讲 Objective C的类 链接:http://dwz.cn/zH5G8 类的定义 Objective-C的类分为两个文件,一个是.h文件一个是.m文件 .h文件存放类、函数声明,类声明用关键字@interface ...

马洪伟 ⋅ 2015/01/05 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

JDK1.6和JDK1.7中,Collections.sort的区别,

背景 最近,项目正在集成测试阶段,项目在服务器上运行了一段时间,点击表格的列进行排序的时候,有的列排序正常,有的列在排序的时候,在后台会抛出如下异常,查询到不到数据,而且在另外一...

tsmyk0715 ⋅ 32分钟前 ⋅ 0

spring RESTful

spring RESTful官方文档:http://spring.io/guides/gs/rest-service/ 1. 可以这么去理解RESTful:其实就是web对外提供的一种基于URL、URI的资源供给服务。不是一个原理性知识点。是一个方法论...

BobwithB ⋅ 34分钟前 ⋅ 0

C++ 中命名空间的 5 个常见用法

相信小伙伴们对C++已经非常熟悉,但是对命名空间经常使用到的地方还不是很明白,这篇文章就针对命名空间这一块做了一个叙述。 命名空间在1995年被引入到 c++ 标准中,通常是这样定义的: 命名...

柳猫 ⋅ 37分钟前 ⋅ 0

@Conditional派生注解

@Conditional派生注解(Spring注解版原生的@Conditional作用) 作用:必须是@Conditional指定的条件成立,才给容器中添加组件,配置配里面的所有内容才生效; @Conditional扩展注解 作用(判...

小致dad ⋅ 38分钟前 ⋅ 0

适配器模式

适配器模式 对象适配器 通过私有属性来实现的类适配器 通过继承来实现的接口适配器 通过继承一个默认实现的类实现的

Cobbage ⋅ 41分钟前 ⋅ 0

Java 限流策略

概要 在大数据量高并发访问时,经常会出现服务或接口面对暴涨的请求而不可用的情况,甚至引发连锁反映导致整个系统崩溃。此时你需要使用的技术手段之一就是限流,当请求达到一定的并发数或速...

轨迹_ ⋅ 45分钟前 ⋅ 0

GridView和子View之间的间隙

默认的情况下GridView和子View之间会有一个间隙,原因是GridView为了在子View被选中时在子View周围显示一个框。去掉的办法如下: android:listSelector="#0000" 或 setSelector(new ColorDra...

国仔饼 ⋅ 48分钟前 ⋅ 0

idea插件开发

1 刷新页面要使用多线程 2 调试要使用restart bug 不要去关闭调试的idea 否则再次启动会卡住

林伟琨 ⋅ 48分钟前 ⋅ 0

Java 内存模型

物理机并发处理方案 绝大多数计算任务,并不是单纯依赖 cpu 的计算完成,不可避免需要与内存交互,获取数据。内存要拿到数据,需要和硬盘发生 I/O 操作。计算机存储设备与 cpu 之间的处理速度...

长安一梦 ⋅ 55分钟前 ⋅ 0

思路分析 如何通过反射 给 bean entity 对象 的List 集合属性赋值?

其实 这块 大家 去 看 springmvc 源码 肯定可以找到实现办法。 因为 spirngmvc 的方法 是可以 为 对象 参数里面的 list 属性赋值的。 我也没有看 具体的 mvc 源码实现,我这里只是 写一个 简...

之渊 ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部