文档章节

OC的三大特性

 蒲公英6_6守候
发布于 2015/10/10 18:22
字数 703
阅读 11
收藏 0
点赞 0
评论 0

OC的三大特性分别为:封装,继承,多态。

简单说一下三大特性吧。

封装:

封装就是对类中的一些字段,方法进行保护,不被外界所访问到,有一种权限的控制功能,Java中有四种访问权限修饰符:

     @public    @package     @protected   @private  

访问权限依次递减,这样我们在定义类的时候,哪些字段和方法不想暴露出去,哪些字段和方法可以暴露,可以通过修饰符来完成,这就是封装。

继承:

        继承是类中的一个重要的特性,他的出现使得我们没必要别写重复的代码,可重用性很高。

多态:

        多态对于面向对象思想来说,个人感觉是真的很重要,他对以后的编写代码的优雅方式也是起到很重要的作用,其实现在很多设计模式中大部分都是用到了多态的特性,其实多态说白了就是:定义类型和实际类型,一般是基于接口的形式实现的。

继承

#import   
  
@interface Car : NSObject{  
    NSString *_brand;  
    NSString *_color;  
}  
  
- (void)setBrand:(NSString *)brand;  
- (void)setColor:(NSString *)color;  
- (void)brake;  
- (void)quicken;  
  
@end

在Car类中定义了两个属性,以及一些方法

Car.m

//  
//  Car.m  
//  汽车!  
//  
//  Created by 蒲公英&微笑 on 2015/10/10.  
//  Copyright © 2015年 呵呵. All rights reserved.
//  
  
#import "Car.h"  
  
@implementation Car  
- (void)setBrand:(NSString *)brand{  
    _brand = brand;  
}  
- (void)setColor:(NSString *)color{  
    _color = color;  
}  
- (void)brake{  
    NSLog(@"刹车");  
}  
- (void)quicken{  
    NSLog(@"加速");  
}  
@end

方法的实现

在来看一下子类:

Taxi.h

//  
//  Taxi.h  
//  汽车!  
//  
//  Created by 蒲公英&微笑 on 2015/10/10.  
//  Copyright © 2015年 呵呵. All rights reserved.
//  
  
#import "Car.h"  
  
@interface Taxi : Car{  
    NSString *_company;//所属公司  
}  
  
//打印发票  
- (void)printTick;  
  
@end

看到Taxi类继承了父类Car,这里需要导入父类的头文件,然后在Taxi类中多了一个属性和方法

Taxi.m

//  
//  Taxi.m  
//  汽车!  
//  
//  Created by 蒲公英&微笑 on 2015/10/10.  
//  Copyright © 2015年 呵呵. All rights reserved.
//   
  
#import "Taxi.h"  
  
@implementation Taxi  
  
- (void)printTick{  
    [super brake];  
    [self brake];  
    NSLog(@"%@出租车打印了发票,公司为:%@,颜色为:%@",_brand,_company,_color);  
}  
  
@end

对方法的实现,这里我们看到实现文件中是不需要导入父类Car的头文件的,因为可以认为,Taxi.h头文件中已经包含了Car的头文件了。而且,这里可以使用super关键字来调用父类的方法,同时这里我们也是可以用self关键字来调用,这里看到其实这两种方式调用的效果是一样的,当我们在子类重新实现brake方法的时候,那么这时候super关键字调用的还是父类的方法,而self调用的就是重写之后的brake方法了。同样,我们也是可以使用父类中的属性。


© 著作权归作者所有

共有 人打赏支持
粉丝 0
博文 15
码字总数 7681
作品 0
西安
「Objective-C基础」三大特性:封装、继承、多态

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

无忌不悔
2017/08/08
0
0
OC 继承和类方法

首先来介绍下类方法 我们在之前声明类的方法时是这样的 之后我们要先生成一个对象,然后才能调用到这个方法 但是类方法不同,首先类方法的开头不是减号,而是加号。 其次类方法不用生成对象,...

JoshSone
2016/08/31
1
0
OC面向对象的三大特性:封装,继承,多态

以下,将以三个类做为描述这三个特性的事例,人(父类),动物(父类),狗(子类),因有其它的原因,代码只能晚上抽个时间补上。 假设人有两个属性,姓名(name)与年龄(age),行为:饲养(feed);动...

AppleDream
2016/03/28
34
0
AppCode 3.0.3 发布,bug 修复版本

AppCode 3.0.3 发布,此版本是个 bug 修复更新版本: OC-9910 – Incorrect indentation of method’s block arguments; OC-10033 – Merge Tool unable to merge resolving conflicts; OC-9......

oschina
2014/07/31
1K
5
OSC 第 110 期高手问答 —— OC & Swift 运行时特性

OSCHINA 本期高手问答( 1月19日- 1月26日)我们请来了听云移动研发总监 @yeskert 来解答 Swift 和 Objective-C 的运行时特性 方面的问题。 杨凯,@yeskert ,听云移动研发总监,负责 tingyunA...

叶秀兰
2016/01/19
5.5K
36
AppCode 3.3.2 EAP 发布

AppCode 3.3.2 EAP 发布,更新内容如下: Apple TV simulators Swift “Surround with do/catch” and “Propagate call error with try” quick-fixes are available for throwing functio......

oschina
2015/11/19
1K
1
iOS OC动态运行时(runtime)~动态特性表现

//联系人:石虎QQ:1224614774昵称:嗡嘛呢叭咪哄 一、概念: 因为运行时 runtime 是 必须到运行时(run time)才会做一些事情; 所以OC的动态特性表现为了三个方面:动态类型、动态绑定、动态加载;...

石虎132
2017/12/17
0
0
深入Objective-C的动态特性

Objective-C具有相当多的动态特性,基本的,也是经常被提到和用到的有动态类型(Dynamic typing),动态绑定(Dynamic binding)和动态加载(Dynamic loading)。 这些动态特性都是在Cocoa程...

Im刘亚芳
2014/11/30
0
0
AppCode 3.1.2 更新,Objective-C 的集成开发环境

AppCode 3.1.2 更新,包括大量的 Swift bug 修复,可以直接从 IDE 更新,也可以在这里下载。 详细 Swift 相关 bug 修复: New class/file wizard is available for Swift now (): We procee...

oschina
2015/01/17
1K
5
AppCode 2016.2.3 发布,支持 Swift3 的特性

AppCode 2016.2.3 (build 162.2380.5)发布了,AppCode 是一个全新的 Objective-C、Swift 的集成开发环境,用于帮助开发 Mac、iPhone 和 iPad 的应用程序。部分更新内容如下: 对于 Swift3...

局长
2016/10/20
1K
1

没有更多内容

加载失败,请刷新页面

加载更多

下一页

nodejs安装以及环境配置(很好的node安装和配置文章,少走很多弯路)

一、安装环境 1、本机系统:Windows 10 Pro(64位) 2、Node.js:v6.9.2LTS(64位) 二、安装Node.js步骤 1、下载对应你系统的Node.js版本:https://nodejs.org/en/download/ 2、选安装目录进...

sprouting
17分钟前
0
0
Redisson

了解了Redisson,发现使用挺简单的,接下来准备深入学习一下。 Redisson介绍 Redisson是架设于Redis基础之上的一个Java驻内存数据网格(In-Memory Data Grid) Redisson在基于NIO的Netty框架上...

to_ln
17分钟前
0
0
python有哪些好玩的应用实现,用python爬虫做一个二维码生成器

python爬虫不止可以批量下载数据,还可以有很多有趣的应用,之前也发过很多,比如天气预报实时查询、cmd版的实时翻译、快速浏览论坛热门帖等等,这些都可以算是爬虫的另一个应用方向! 今天给...

python玩家
17分钟前
0
0
jq 判断复选框是否被选中,复选框后台接收

1. 效果 2. 代码 html部分: JS部分: var rememberLogin = $("#rememberLoginId").is(':checked')//获取复选框是否被选中 var rememberLoginval = $("#rememberLoginId").attr('value')//拿......

Lucky_Me
25分钟前
0
0
python爬虫日志(3)-爬去异步加载网页

在浏览器检查元素页面中,选取Network中的XHR选项即可观察每次加载页面,网页发出的请求,观察url的规律即可利用封装的函数对每一页进行爬取。

茫羽行
25分钟前
0
0
《趣谈网络协议》之为什么要学习网络协议?

一、协议 1.协议的定义 简单说协议就是一个规则,保证沟通交流双方可以互相听懂、理解或者可以双方合作可以顺利进行的一个约定和规则。 2.生活中例子 (1)有一种叫“程序猿”的物种,敲着一种...

aibinxiao
26分钟前
1
0
Python数据分析numpy基础-维度的认识

什么是多维数组? 核心对象是同型的多维数组(简单理解就是一个表格,通常内容都是些数字),具有相同的数据类型。 概念: 1. axes(轴):数组的维度统称为轴。 2. rank:轴的数量称为rank。...

十年磨一剑3344
31分钟前
0
0
Java 正则表达式相关资料

1.java正则表达式过滤html标签

IT追寻者
34分钟前
0
0
点赞出现数字变大效果

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <style> .container{ padding: 50px; border: 1px solid #dddddd; } .item{ position: relative; } ......

南桥北木
52分钟前
0
0
anroid中批量将px转换成dp

package com.qu;import java.io.File;import java.io.FileWriter;import java.io.IOException;public class Aaaa {public static void main(String[] args) {String fi......

android-key
54分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部