OC第一个思想 类的封装

一:对象方法和类方法

对象方法:

1)‘-‘ 开头

2)可以访问实例变量

3)可以调用类方法

4)可以调用自己和其他对象的方法(调用其他对象方法,要作为参数传递过来)

5)由对象调用

类方法:

1)‘+‘ 开头

2)不可以访问实例变量

在一个类方法中不能访问实例变量,因为实例变量还没有分配内存,初始化,也可以说还没有实例变量,原因是还没有对象

3)类方法可以调用其他的类方法

4)类方法不可以用对象调用

5)类方法,可以调用对象方法(把对象作为方法参数传递过来)

6)类方法中不可以再调用当前方法(死循环)

例如Person类调用自己的类方法reach

+ (void) reach;

{

[Person reach];

}

[Person reach];      // 死循环

注意:对象方法和类方法可以同名

二:匿名类的使用

1> 匿名类的第一种用法:

Person *p = [Person new];

//创建一个车的对象

//显示的使用对象

Car *car1 = [Car new];

car1->_color=1;

//人开车回家

[p goHome:[Car new]];  //匿名的使用

Person对象方法goHome传入的参数对象为匿名对象[Car new];

2>匿名类的第二种用法

匿名类可以调用方法

[[Car new] run];

3> 匿名类的第二种用法

访问类的成员变量 实际上达不到我想要的效果

//[Car new]每执行一次,都会分配一块新的存储空间

[Car new]->_color=2;

三:成员变量的作用域

四:封装

类的封装:

只能通过类的对象方法来访问类的成员变量的措施

类的成员变量提供set和get方法

set设置类的成员变量,set方法

@interface Car:NSObject

{

//实例变量

int _lunzi;

int _color;

}

//定义set方法

-(void)setLunzi:(int)lunzi;

//定义get方法

-(int)lunzi;

//set color

-(void)setColor:(int)color;

-(int)color;

@end

@implementation Car

//定义set方法

-(void)setLunzi:(int)lunzi{

_lunzi = lunzi;

}

//定义get方法

-(int)lunzi{

return _lunzi;

}

//set color

-(void)setColor:(int)color{

_color = color;

}

-(int)color{

return _color;

}

@end

书写规范:

set方法:

1)对象方法

2)即然是设置成员变量值,set方法,可以没有返回值

3)以set+去掉下划线的成员变量名,并且成员变量的首字母要大写

4)既然要设定成员变量值,就得传过来要设定的值

传递过来的值得类型要和要设定的成员变量名一致

形参一般是去掉下划线的成员变量名

get获取当前类的成员变量值,get方法 (可以实现懒加载:需要时在加载)

get方法

1)对象方法

2)既然要获取成员变量的值,方法得有返回值

3)返回值得类型必须要和要返回的成员变量的类型要一致

4)方法名一般是去掉下划线的成员变量名

封装的好处:1,不允许外部修改对象属性的值,只能通过对象的方法修改

2,可以合理的对外部传入的值进行判断其合理性

五:组合

时间: 2024-09-30 00:27:23

OC第一个思想 类的封装的相关文章

iOS开发OC基础:OC基础概念总结,OC面向对象的思想

一.什么是OOP: OOP(Object Oriented Programming):面向对象编程 二.面向对象和面向过程的区别: 面向过程编程:分析解决问题的步骤,实现函数,依次使用面向对象编程:分解问题组成的对象,协调对象间的联系和通信,解决问题. 面向过程是以事件为中心,关心的是完成这个事件的详细步骤:面向对象是以事物为中心,关心的是事物应该具备的功能,而完成一个事件只是事物所有功能里面的一个小功能(以过程为中心,以对象为中心) 三.类和对象 对象定义了解决问题的步骤中的行为,不刻意完成一

模块的封装之C语言类的封装

[微知识]模块的封装(一):C语言类的封装 是的,你没有看错,我们要讨论的是C语言而不是C++语言中类的封装.在展开知识点之前,我首先要 重申两点: 1.面向对象是一种思想,基本与所用的语言是无关的.当你心怀面向对象时,即使使用QBasic也能写 出符合面向对象思想的代码,更不要说C语言了.举一个反例,很多人初学C++的时候,并没有掌 握面向对象的思想,活生生的把类当结构体来使用的也不在少数吧. 2.面向对象的最基本的出发点是“将数据以及处理数据的方法封装在一起”,至于继承.派生.多态之类 的则

创造自己的群集类型----之----创建“包装”类以封装预定义集群类型

第一步:创建"包装"类以封装预定义集群类型 public class EncapsulatePredefinedCluster { private ArrayList students; public EncapsulatePredefinedCluster() { students = new ArrayList(5); } /// <summary> /// 注册新生 /// </summary> /// <param name="s&quo

第一讲、类和对象

一.OC概述 代码格式 int main(int argc, const char * argv[]) {    @autoreleasepool { 代码区 }      return 0;     } 1.OC中支持基本数据类型  int .float 2.C语言中使用字符串  "hello"                        OC中使用字符串对象 @"hello" 3.NSString是系统类库提供的--字符串类           定义对象类型的

浅谈JavaEE中的JDBC模板类的封装实现以及合理的建立项目包结构(一)

从今天开始我们一起来聊下有关,javaEE开发中的一些知识,JavaEE的开发用于企业级的开发,但是现在企业中一般也不会使用JDBC开发,大部分都是使用自己公司开发的一套的框架,但是这些框架的架构一般也是会模仿着有名JavaEE开源三大开发框架SSH(Struts2+Spring+Hibernate)或者现在也很流行的SSM开发框架(Spring+SpringMVC+MyBatis) 来进行深度定制以便于适合自己企业的实际开发需求.有的人曾说既然去公司又是重新学习一套框架,还有必要学习开源的三大

PHP 类的封装和使用

类:相似的数据和数据操作的封装  class 成员量:普通的量加上一定的修饰就变成了成员量 public,protected,private 成员方法:普通的函数,加上一定的修饰,放入到类中就变成了成员方法. 实例化:类创建特例的过程(实例化一个对象 new) 对象: 类的特例或者实例   object 认识类 -> 类的封装 -> 类的实例化 -> 对象的认识 -> 操作对象 ----------------------------------------------------

025医疗项目-模块二:药品目录的导入导出-HSSF导入类的封装

上一篇文章提过,HSSF的用户模式会导致读取海量数据时很慢,所以我们采用的是事件驱动模式.这个模式类似于xml的sax解析.需要实现一个接口,HSSFListener接口. 原理:根据excel底层存储(07以版本采用xml存储,以下版本采用二进制)标签决定事件出发点. 目标:在解析完一行(row)数据时进行触发. 优点:读取大数据时,不会导致内存溢出 缺点:用户在解析数据时比较困难.读取数据时速度不快的,因为读取数据的同时根据每个标签进行事件触发. HSSF事件驱动读取文件的封装类解析. 主要

VC++编程之第三课笔记——MFC窗口创建过程以及窗口类的封装

第三课 MFC窗口创建过程以及窗口类的封装 MFC的每一个类都是以C开头的,表明这是一个Class. 工程包含(单文档) 创建工程名为aaa的工程(单文档)时,在类视图中可看见五个类: CAboutDlg CMainFrame CAaaApp CAaaDoc CAaaView 其中: 类CAboutDlg继承自CDialog类,对话框的类 类CMainFrame继承自CFrameWnd类,创建整个程序的框架窗口 类CAaaApp继承自CWinApp类,创建唯一的应用程序对象 类CAaaDoc继承

Java——类的封装、继承与多态

一.类和对象 1.类 类是数据以及对数据的一组操作的封装体. 类声明的格式: 类声明 { 成员变量的声明: 成员方法的声明及实现: } 1.1 声明类 [修饰符] class 类<泛型> [extends 父类] [implements 接口列表] <泛型>——类的参数,带有参数的类成为泛型类. 1.2 声明成员变量和成员方法 成员变量声明格式:[修饰符] 数据类型 变量[=表达式]{,变量[=表达式]}: 成员方法——用来描述对成员变量进行的操作,格式:[修饰符] 返回值类型 方