//
// Phone.h #import <Foundation/Foundation.h>
typedef enum
{
kFlahlightStatusOpen,
kFlahlightStatusClose
} FlahlightStatus; // 被继承的这个类我们称之为父类/ 超类
@interface Phone : NSObject + (void)carameWithFlahlightStatus:(FlahlightStatus)status;
- (void)carameWithFlahlightStatus:(FlahlightStatus)status;
+ (void)openFlahlight;
+ (void)closeFlahlight;
@end
//
// Phone.m #import "Phone.h" @implementation Phone //可以有同名的类方法和对象方法
- (void)carameWithFlahlightStatus:(FlahlightStatus)status;
{
NSLog(@"- carameWithFlahlightStatus");
} + (void)carameWithFlahlightStatus:(FlahlightStatus)status
{
if (status == kFlahlightStatusOpen) {
NSLog(@"%@",self);//Iphone,即使这个方法是子类通过super方法调过来的,self也是子类对象Iphone.
[self openFlahlight];
}else
{
NSLog(@"%@",self);
[self closeFlahlight];
}
NSLog(@"拍照");
} + (void)openFlahlight
{
NSLog(@"打开闪光灯");
} + (void)closeFlahlight
{
NSLog(@"关闭闪光灯");
} @end
//
// Iphone.h #import <Foundation/Foundation.h>
#import "Phone.h" @interface Iphone : Phone + (void)carameWithFlahlightStatus:(FlahlightStatus)status;
- (void)test;
@end
//
// Iphone.m #import "Iphone.h" @implementation Iphone + (void)carameWithFlahlightStatus:(FlahlightStatus)status
{
// 由于以下代码和父类中的一模一样, 所以只需调用父类写好的代码即可
/*if (status == kFlahlightStatusOpen) {
NSLog(@"%@",self);
[self openFlahlight];
}else
{
NSLog(@"%@",self);
[self closeFlahlight];
}
NSLog(@"拍照");*/ // [self carameWithFlahlightStatus:status];
// 只需要利用super给父类的方法发送一个消息, 那么系统就会自动调用父类的方法
// 如果以后想在子类中调用父类的方法可以使用super
// 如果想在给父类方法进行扩展的同时保留父类的方法, 那么可以使用super调用父类同名的方法
[super carameWithFlahlightStatus:status];
} - (void)test
{
/*
super跟self一样,super在类方法中就是代表了这个类,会调用父类的类方法。在对象方法中, 代表了这个对象,会调用父类的对象方法,
可以利用super在任意方法中调用父类中的方法,super一般用在重写父类的方法并且想保留父类的功能。
*/
[super carameWithFlahlightStatus:kFlahlightStatusOpen];
}
@end
//
// main.m #import <Foundation/Foundation.h>
#import "Iphone.h" int main(int argc, const char * argv[]) { Iphone *p = [Iphone new];
[p test];
[Iphone carameWithFlahlightStatus:kFlahlightStatusOpen]; return ;
}

oc21--super的更多相关文章

  1. 子类继承父类时JVM报出Error:Implicit super constructor People() is undefined for default constructor. Must define an explicit constructor

    当子类继承父类的时候,若父类没有定义带参的构造方法,则子类可以继承父类的默认构造方法 当父类中定义了带参的构造方法,子类必须显式的调用父类的构造方法 若此时,子类还想调用父类的默认构造方法,必须在父类 ...

  2. [LeetCode] Super Ugly Number 超级丑陋数

    Write a program to find the nth super ugly number. Super ugly numbers are positive numbers whose all ...

  3. Maven Super POM

    Maven super POM defines some properties. Three ways to find it ${M2_HOME}/lib/maven-model-builder-3. ...

  4. java基础 super 子类调用父类

    如果希望在子类中,去调用父类的构造方法,要求在子类的构造函数调用 example如下: package test; /* * 如果希望在子类中,去调用父类的构造方法,要求在子类的构造函数调用 * */ ...

  5. Python类中super()和__init__()的关系

    Python类中super()和__init__()的关系 1.单继承时super()和__init__()实现的功能是类似的 class Base(object): def __init__(sel ...

  6. java方法重载(overload)、重写(override);this、super关键简介

    一.方法重载: 条件:必须在一个类中,方法名称相同,参数列表不同(包括:数据类型.顺序.个数),典型案例构 造方重载.  注意:与返回值无关 二.方法重写: 条件: (1)继承某个类或实现某接口 (2 ...

  7. Java super关键字活用

    在实际开发中我们要自定义组件,就需要继承自某个组件类,如果我们自定义的这个组件类也需要像被继承的这个组件类一样,拥有丰富的构造方法. 关键字super的作用就更加显得尤为重要了,你可以在堆砌自己自定义 ...

  8. 深入super,看Python如何解决钻石继承难题 【转】

    原文地址 http://www.cnblogs.com/testview/p/4651198.html 1.   Python的继承以及调用父类成员 python子类调用父类成员有2种方法,分别是普通 ...

  9. 关于[super dealloc]

    销毁一个对象时,需要重写系统的dealloc方法来释放当前类所拥有的对象,在dealloc方法中需要先释放当前类中所有的对象,然后再调用[super dealloc]释放父类中所拥有的对象.如先调用[ ...

  10. ubuntu super daemon设置

    super daemon是一个在Linux下面全面管理自己服务设置的东东,他可以接管很多服务的设定,只需要在/etc/xinetd.d/下面放置好自己的配置文件就可以了,那么,具体应该怎么配置呢?   ...

随机推荐

  1. 题解报告:hdu 4764 Stone(巴什博弈)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4764 Problem Description Tang and Jiang are good frie ...

  2. 基于artDialog的扩展

    /* * * 引用此文件必须引用以下两个资源文件,并且还要引用jQuery * <link href="ui-dialog.css" rel="stylesheet ...

  3. Spring Boot (16) logback和access日志

    Spring Boot 内部采用的是Commons Logging进行日志记录,但是在底层为Java Util Logging.Log4J2.Logback等日志框架提供了默认配置. logback ...

  4. ajax-工作原理,包含技术,缺陷

    1:原理 2:包含技术 3:缺陷

  5. java如何设置文件的权限

    import java.io.File; 2.import java.io.IOException; 3./× 4.×只能给当前用户赋予对该文件的权限,调用createNewFile()方法默认的权限 ...

  6. MSP430之section(1)

    1 Intro The smallest unit of an object file is a section. A section is a block of code or data that ...

  7. AFNetworking源码解析-https证书相关

    本篇说说安全相关的AFSecurityPolicy模块,AFSecurityPolicy用于验证HTTPS请求的证书,先来看看HTTPS的原理和证书相关的几个问题. HTTPS HTTPS连接建立过程 ...

  8. MVC 返回404,返回图片,流到数组,apk信息

    return HttpNotFound(); byte[] buffer0 = QRCode(); return File(buffer0, @"image/jpeg"); // ...

  9. c# cookie帮助类

    using System; using System.Collections.Generic; using System.Text; using System.Web; namespace Matic ...

  10. vue遇到的大坑,h5在ios10版本下不能打开页面

    无论是谁,在做事情的过程中总是会遇到学坑,才能成为最后的大神 这个坑不说了,找了半天.希望能帮助到你们 进入build文件夹: 找到webpack.prod.conf.js文件: 在UglifyPlu ...