黑马程序员—13-oc封装

一、   关于封装

1、封装是对象和类概念的主要特性。它是隐藏内部实现,稳定外部接口,可以看作是“包装”。 封装,也就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏。
  2、好处:使用更加简单  变量更加安全可以隐藏内部实现细节  开发速度加快
OC中一个类可以继承另一个类,被继承的类成为超类(super class),继承的类是子类(child class),可以直接拥有父类中所有非私有成员(相关实例变量)、方法。

二、   set方法和get方法

1.  set方法和get方法的使用场合

@public的成员可以被随意赋值,应该使用set方法和get方法来管理成员的访问(类似机场的安检、水龙头过滤,过滤掉不合理的东西),比如僵尸的生命值不能为负数

2.  set方法

1)   作用:用来设置成员变量,可以在方法里面过滤掉一些不合理的值

2)   命名规范:

Ø   方法都是以set开头,而且后面跟上成员变量名,成员变量名的首字母必须大写

Ø   形参名称不要跟成员变量同名

3.  get方法

1)   作用:返回对象内部的成员变量

2)   命名规范:get方法的名称一般就跟成员变量同名

4.  成员变量的命名规范

Ø   成员变量都以下划线 _ 开头

Ø   可以跟get方法的名称区分开

Ø   可以跟其他局部变量区分开,一看到下划线开头的变量,肯定是成员变量

5.  代码示例

#import <Foundation/Foundation.h>

// 声明

@interface Car : NSObject

{

int _wheels; // 轮子个数

}

/*set方法*/

- (void) setWheels:(int)wheels;

/*get方法*/

- (int) wheels;

@end

@implementation Car

// set方法的实现

- (void) setWheels:(int)wheels

{

// 对外面传进来的轮子数进行过滤

if (wheels<=0)

{

wheels = 1;

}

_wheels= wheels;

}

// get方法的实现

- (int) wheels

{

return _wheels;

}

@end

6.  封装的好处

Ø   过滤不合理的值

Ø   屏蔽内部的赋值过程

Ø   让外界不必关注内部的细节

三、   OC的弱语法

Ø 一个没有定义的方法,可编译,链接会有警告,运行时会有这样的错误

Unrecognizedselector sent to instance

Ø 不声明也可以只写实现

时间: 2024-10-22 14:30:36

黑马程序员—13-oc封装的相关文章

【黑马程序员】————OC特有语法

一.点语法 点语法的本质还是方法调用 p.age = 10; // [p setAge:10]; int a = p.age; // [p age]; 二.成员变量的作用域 @public : 在任何地方都能直接访问对象的成员变量 @private : 只能在当前类的对象方法中直接访问(@implementation中默认是@private) @protected : 可以在当前类及其子类的对象方法中直接访问 (@interface中默认就是@protected) @package : 只要处在

《黑马程序员》 OC的三大特性

OC 的三大特性:封装.继承.多态. 封装:过滤不合理的值 #import <Foundation/Foundation.h> // set 方法 // 作用:提供一个方法给外界设置成员变量,可以在方法对成员变量进行赋值和过滤 // get 方法 // 作用:返回对象内部的成员变量,得到成员变量的值. @interface Student : NSObject { // 成员变量名的命名规范 // 成员变量名肯定以下划线开头 // 好处:可以区分参数名称和成员变量的名称,也可以区分变量名和成员

【黑马程序员】OC基本语法——类与对象相关概念

------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 最近在学OC的面向对象部分,可能是因为以前学Java和PHP时习惯了主流的面向对象思想,接触到OC的面向对象有很多说法都不习惯,查了很多东西,终于基本都搞清楚了,在这里小结一下. 一.类和对象 1.类:类是一个抽象概念,代表着一类事物,如:人,动物,交通工具等:这个和Java或PHP里类的概念没有区别. 其定义方法如下: @interface Student : NSObject { NSSt

黑马程序员-IOS笔记-封装构造方法

前面我们用OC的类创建对象的时候我们用的是new方法.其实new方法是一个组合的方法,它是由两个方法组合在一块的,分别是alloc方法和init方法.其中alloc方法是类方法,它是用来给对象分配一个存储空间的,init方法是对象方法,它是用来对对象进行初始化的,init方法也叫做构造方法. 在OC中,我们通常要重写init方法以便在初始化的时候就给成员变量赋上一些值,所以我们在创建对象的时候最好不要用new方法,因为这样我们就不能重写构造方法了.那么怎么重写init方法呢?重写init方法的步

黑马程序员-IOS笔记-封装

#import <Foundation/Foundation.h> @interface Student:NSObject { //成员变量尽量不要用@public int age; } /*set方法 作用:提供一个方法给外界,设置age属性值,可以在方法里面对参数过滤 命名规范:1)方法名必须以set开头 2)set后面跟上成员变量的名称,成员变量的首字母必须大写 3)返回值一定是void 4)一定要接收一个参数,而且参数类型跟成员变量类型一致 5)行参的名称不能跟成员变量名一样 */ /

黑马程序员-OC学习笔记之Foundation框架NSNumber、NSValue和NSDate

---------------------- IOS开发.Android培训.期待与您交流! ---------------------- 一.NSNumber 前几篇笔记中,小桥复习了Foundatio框架中的几个类,这三个是OC学习的尾声了. 小桥已经复习过OC数组类NSArray,也说过它只能存放OC的对象,对于基本的数据类型确无能为力,但是实际编程中经常要把基本的数据如int.float,结构体存放的OC数组中,怎么办?这里的NSNumber就有用了,它能够把基本数据类型包装成OC对象.

黑马程序员-OC面向对象继承关系和组合关系笔记

继承关系是描述类和类之间的关系,两个类分别称为子类和父类,子类继承了父类,子类就拥有了父类的属性和方法: 继承的关系特点描述出来就是:** "是" **  (例如:学生类 是 人类) 组合关系描述的语句是:**** "拥有" ***  (例如:学生有成绩这个属性,而成绩属性本来就是一个成绩类的对象 ) 继承示例代码: #import <Foundation/Foundation.h> //Animal类的声明 @interface Animal : NS

黑马程序员—oc语言学习心得—block

黑马程序员—oc语言学习心得—block -------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 1,程序一般用typedef定义一个block类型 然后调用 typedef void(^xxx)(); 可使用助记符 inlineblock 2,Block内部可以访问外部变量:默认情况下,Block内部不能修改外部的局部变量 给局部变量加上__block关键字,则这个局部变量可以在block内部进行修改. 3,block的作用: 利用block封

黑马程序员——OC有参函数声明以及调用

黑马程序员——OC有参函数声明以及调用 ------- android培训.ios培训.期待与您交流! ---------- 1 //没有参数有返回值方法的声明实现及调用 2 3 //有参数有返回值方法的声明实现及调用 4 5 #import <Foundation/Foundation.h> 6 7 @interface cacu:NSObject 8 9 { 10 11 //实例变量 12 13 @public; 14 15 int _num1; 16 17 int _num2; 18 1

黑马程序员-OC学习笔记之Foundatio框架集合类

---------------------- IOS开发.Android培训.期待与您交流! ---------------------- 一.OC数组 OC数组是一个类,它也分不可变数组NSArray和可变数组NSMutableArray. 1?不可变数组的创建 // 创建一个不可变数组,元素为一个OC字符串对象 @"小桥" NSArray *array1 = [NSArray arrayWithObject:@"小桥"]; // 创建一个不可变数组,元素为多个O