文档章节

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

lyh2017iOS
 lyh2017iOS
发布于 2017/07/13 11:19
字数 648
阅读 2
收藏 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
博文 357
码字总数 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
779
0
【iOS】Swift类与结构、存储属性、计算属性、函数与方法、附属脚本等

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

xn4545945
2014/09/16
0
0
Object-C基础-03-点语法

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

Corwien
2016/03/17
16
0
dynamic动态分发,unsafeBitCast,自动调用的闭包-设置时,会设置一个KVO监听

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

iOS技术者
2017/05/01
0
0
[super class]与[self class]、isKindOfClass与isMemberOfClass

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

coderLZ
06/01
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Go interface{} to string

package mainimport "fmt"func main() {var a interface{}a = "dsadjaldaldad"var b stringb = a.(string) // 话说,用人话说的话,这叫什么操作?fmt.Println(a, b)}...

taadis
16分钟前
0
0
数据库防火墙

数据库防火墙顾名思义是一款数据(库)安全设备,从防火墙这个词可以看出,其主要作用是做来自于外部的危险隔离。换句话说,数据库防火墙应该在入侵在到达数据库之前将其阻断,至少需要在入侵...

突突突酱
25分钟前
1
0
RDBMS 关系型数据库与 NoSQL 全面比较

随着互联网的不断发展,各种类型的应用层出不穷,所以导致在这个云计算的时代,对技术提出了更多的需求,主要体现在下面这四个方面: 低延迟的读写速度:应用快速地反应能极大地提升用户的满...

PeakFang-BOK
34分钟前
1
0
徒弟做了一个Python的实战小项目——银行系统

国际惯例:实践是检验真理的唯一标准。 众所周知,在编程过程中理论知识再充实也需要通过项目的炼金石。下面给大家看一下我徒弟做的一个小项目实战要求,是做一个银行系统,就是我们去银行办...

无也Python
40分钟前
2
0
vue.js响应式原理解析与实现

从很久之前就已经接触过了angularjs了,当时就已经了解到,angularjs是通过脏检查来实现数据监测以及页面更新渲染。之后,再接触了vue.js,当时也一度很好奇vue.js是如何监测数据更新并且重新...

peakedness丶
59分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部