文档章节

第03天OC语言(08):继承基本概念

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

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

知道什么是继承

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

什么是类


#####一、本章笔记

 当前代码存在的问题 : 重复代码太多
 可以利用 继承来解决当前重复代码太多的问题
 只要 A类继承了B类, 那么 B类 就拥有了 A类的所有属性 和方法

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

#pragma mark 08-继承基本概念

#pragma mark - 代码
#import <Foundation/Foundation.h>
#pragma mark 类
#import "IPhone.h"  
#import "Android.h"
#pragma mark - main函数
int main(int argc, const char * argv[])
{

    IPhone *p = [IPhone new];
    [p signalWithNumber:@"10010"];
    
    Android *a = [Android new];
    [a signalWithNumber:@"20020"];
    
    [IPhone brand];
    [Android brand];
    
    [p setCpu:222];
    NSLog(@"cpu = %i",[p cpu]);
    
    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

######iPhone

>>>.h
#import <Foundation/Foundation.h>
#import "Phone.h"
/*
 其实 在类名的后面 加上 : NSObject, 就让当前类 继承 NSObject
 new 方法就是继承过来的
 isa 指针
 继承的语法 @interface 类名 : 需要继承的类

 */
//@interface IPhone : NSObject
@interface IPhone : Phone
/*
{
    int _cpu;
}

// 打电话
- (void)signalWithNumber:(NSString *)number;
// 发短信
- (void)sendMessageWithNumber:(NSString *)number andContent:(NSString *)content;
*/


- (void)setCpu:(int)cpu;
- (int)cpu;
@end
>>>.m
#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

######Android

>>>.h
// 继承了某个类的类 我们称之为子类
#import <Foundation/Foundation.h>
#import "Phone.h"
@interface Android : Phone
/*
{
    int _cpu;
}

// 打电话
- (void)signalWithNumber:(NSString *)number;
// 发短信
- (void)sendMessageWithNumber:(NSString *)number andContent:(NSString *)content;
*/

- (void)setCpu:(int)cpu;
- (int)cpu;
@end
>>>.m
#import "Android.h"

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

- (void)setCpu:(int)cpu
{
    _cpu = cpu;
}
- (int)cpu
{
    return _cpu;
}

@end

image.png

© 著作权归作者所有

共有 人打赏支持
lyh2017iOS
粉丝 1
博文 357
码字总数 137380
作品 0
朝阳
私信 提问
iOS 编写高质量Objective-C代码(二)

《编写高质量OC代码》已经顺利完成一二三四篇! 附上链接: iOS 编写高质量Objective-C代码(一) iOS 编写高质量Objective-C代码(二) iOS 编写高质量Objective-C代码(三) iOS 编写高质量...

MrLiuQ
08/13
0
0
Swift编程权威指南第2版 读后收获

  自从参加工作一直在用OC做iOS开发。在2015年的时候苹果刚推出swift1.0不久,当时毕竟是新推出的语言,大家也都很有激情的学习。不过在学完后发现很难在实际项目中使用,再加上当时公司项...

滴水微澜
08/14
0
0
《Swift编程语言教程》中文翻译及读书笔记page21

《The Swift Programming Language》中文翻译及读书笔记,附件中为英文原版教程 因21页之前内容和技术关系不大,不做翻译整理,从第21页开始 第21页 1 swift作为一门语言对的新老语言的继承与...

中游学院
2014/07/06
0
0
Swift2.0与OC混编实验--动态库(一)

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

泊竹
2016/01/17
434
0
从 OC 到 Swift 的快速入门与专业实践

只会介绍与 OC 有明显区别的地方,不会介绍 OC 中没有的,比如元组。当前总结也只是蜻蜓点水而已,但是有 OC 的基础,看这些已经足够。 一、数据 Swift 是类型安全的语言: Swift 必须明确数...

CoderHG
08/04
0
0

没有更多内容

加载失败,请刷新页面

加载更多

网易免费企业邮箱配置客户端

网易免费企业邮箱客户端(pop、imap、smtp)权限默认开启,对应服务器地址为: 发件服务器: SMTP:smtp.ym.163.com 默认端口为:25 (如勾选ssl安全链接,端口号为994) 收件服务器: POP3...

柴高八斗之父
9分钟前
0
0
Hanlp在ubuntu中的使用方法介绍

HanLP的一个很大的好处是离线开源工具包,换而言之,它不仅提供免费的代码免费下载,而且将辛苦收集的词典也对外公开啦,此诚乃一大无私之举.我在安装的时候,主要参照这份博客: blog.csd...

左手的倒影
12分钟前
0
0
软件架构的案例(架构学习九)

阿里 liunx+php+apache+mysql(淘宝网成立)->oracle(淘宝旺旺、支付宝)->java1.0(EJB、Mysql)->java2.0(Spring、JBoss、)->java3.0->分布式时代...

zzx10
13分钟前
1
0
用9种办法解决 JS 闭包经典面试题之 for 循环取 i

闭包 正确的说,应该是指一个闭包域,每当声明了一个函数,它就产生了一个闭包域(可以解释为每个函数都有自己的函数栈),每个闭包域(Function 对象)都有一个 function scope(不是属性),function ...

Jack088
15分钟前
0
0
Yearning基于Inception的开源SQL审核平台

基础环境: python3 nodejs vuejs mysql python-ldap pymysql mysql 新建数据库 create database Yearning DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci; Navicat导入初始化数据 : ......

以谁为师
33分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部