OC基础笔记——类方法和对象方法和封装(广州黑马一期)

对象方法:
1、声明和实现方法时候,以 -开头
2、对象方法是隶属于对象,只能通过对象调用
3、对象方法中可以直接访问成员变量,因为对象方法和成员变量都是隶属于该对象的
4、对象方法中可以调用其他对象方法
5、对象方法中也可以调用类方法
类方法:
1、声明和实现的标识符都是 +
2、类方法它是属于类本身的
3、类方法是直接通类名调用的,不能通过对象调用
4、类方法不能访问成员变量,因为成员变量是对象的,不是类的
5、在类方法中不能直接调用对象方法,也就是说不能通过self来调用对象方法
如果你要再类方法中调用对象方法
1、在类方法中创建一个对象
2、把对象作为形参传入

类方法优点:
1、调用类方法不用创建对象,所以节省内存
2、通过对象调用对象方法,首先要通过对象找他isA指针,然后在去类中找相应的方法,所有比较慢
3、直接通过类调用方法,直接找到这个类然后调用相应的方法就OK了,所有类方法的效率比较高
4、当方法中不需要使用到成员变量的时候就使用类方法

封装:
1、类是数据与功能的封装,数据就是成员变量,功能就类方法或对象方法
2、对数据的封装
如果我们把属性设置为@public那么,这个属性外部就可以任意的修改,我们就失去管理这个属性的权利
1、当你把属性暴露在外部的时候,那么你就是失去对它的管理,一旦这个属性被多个人用的时候,如果再像管理这个属性就变得非常麻烦,这个类的可维护性就变得很差

2、怎么对数据进行封装
1、为每一个属性提供getter 和 setter方法
2、setter方法:又称为写方法,赋值给对象赋值
1、必须是对象方法
2、它没有返回值
3、名字 set + 属性名称去掉下划线,首字母大写
4、必须提供一个参数,参数类型必须与所对象的成员变量的类型一致
3、getter方法:又称为读方法,赋值读取属性的值
1、必须是对象方法
2、必须要返回值,并且返回值类型要与成员变量类型一致
3、方法名必须是成员变量去掉下划线
4、一定是空参的

1、NSString
1、NSString对象的创建
1、通过字面量的方式
NSString *str = @"字面量";
2、通过对象方法
NSString *str = [NSString alloc];
str = [str initWithUTF8String:"C语言字符串"];
可合并一句
NSString *str = [[NSString alloc] initWithUTF8String:"C语言字符串"]
3、通过类方法创建
NSString *str = [NSString stringWithFormat:@"格式化字符串",....];
格式化字符串:它的格式符与NSLog中的相同
2、计算字符长度
[str length];//计算字符串中字符个数的,一个中文占用一个字符
2、BOOL类型:它是一种逻辑类型,逻辑类型只有真和假,YES 为真 NO假
1、定义变量
2、做函数或方法的形参类型
3、作为函数或方法的返回值类型
BOOL类型的本质: char
YES 1
NO 0
3、对象与函数
0、函数:C语言中函数,他们之间是平行的,没有谁隶属于谁的关系,调用直接通过函数名调用的,可以在文件的任意位置
1、对象作为函数参数传递是地址传递,如果在函数中通过形参来改变对象中属性,那么它会影响实参的中对象的属性
2、形参对象在可以函数访问自己的成员也可以调用自己的函数
3、对象可以函数的返回值
4、对象在函数中可以连续传递
4、对象与方法
0:方法OC中的,在定义类的时候声明和实现方法,它是隶属于某个对象或某个类的,调用的时候必须通过对象或类来调用;
1、对象作为方法参数传递是地址传递
2、对象在方法中也可以访问自己的成员变量,也可以调用自己的函数
3、对象也可以方法的返回值
4、对象可在方法中连续传递

5、多文件开发
1、为了方便程序管理,我们把一个类分为两个文件
.h 文件:用来存放类的声明,它是给使用该类的人看的,声明就相当于表盘
.m 文件:用来实现的类的方法的,就表内部实现,如齿轮
2、当我们需要使用某个类的时候,需要导入这个类的头文件,不能导入实现文件
3、当某两个类直接出现循环包含的时候,一端必须使用@class来声明这个类
4、@class 仅仅是告诉编译器这是一个类,其他关于类本身信息它都不知道,所这@class一般仅仅用在头文件中

时间: 2024-10-12 14:23:42

OC基础笔记——类方法和对象方法和封装(广州黑马一期)的相关文章

OC基础--OC中的类方法和对象方法

PS:个人感觉跟C#的静态方法和非静态方法有点类似,仅仅是有点类似.明杰老师说过不要总跟之前学过的语言做比较,但是个人觉得,比较一下可以加深印象吧.重点是自己真的能够区分开! 一.OC中的对象方法 1.以减号“-”开头 2.只能让对象调用,没有对象,这个方法根本不可能被执行 3.对象方法能访问实例变量(也就是成员变量) 二.OC中的类方法 1.以加号“+”开头 2.只能用类名调用,对象不能调用 3.类方法中不能访问实例变量(也就是成员变量) 4.适用场合:当不需要访问成员变量的时候,尽量用类方法

ios开发 oc 的类方法与对象方法

首先我们先来了解一下什么是类方法与对象方法. 对象方法: 对象是由"-"开头.比如:-(void)Runner: 对象方法顾名思义只能由对象来调用 比如说: @interface Person : NSObject (void)Runner://对象方法 @end: int main() { Person *p=[Person new];//Person是一个类,它创建一个对象p. [p Runner];//p调用Runner这个方法: return 0; { 在对象方法中可以直接访问

OC基础笔记目录

OC基础(1) Objective-C简介 OC和C对比 第一个OC程序 面向对象思想 OC基础(2) 类与对象 类的设计 第一个OC类 对象方法的声明和实现 类方法的声明和实现 OC基础(3) 对象的存储细节 函数与方法对比 常见错误 OC基础(4) NSString 类介绍及用法 结构体成员变量 对象和方法之间的关系 对象作为方法的参数连续传递 OC基础(5) #pragma mark指令 OC多文件开发介绍 匿名对象

OC基础-变量可见对与方法

实例变量的可见度: public(公有的)       实例变量可以在类的外部和内部操作      访问方式:对象名->属性名. protected(受保护的,默认的)    实例变量只能在该类和其子类中操作    访问方式:除类本身和其之类外,其他的不可以直接访问 private(私有的)     实例对象只能在该类访问       访问方式:除本类外不可以直接访问 方法: 类型:类方法,实例方法. 类方法:只能能使用,例如:+(id)alloc ,注意:类方法中不可以使用实例变量. 实例方法

java 基础笔记 基本数据类型对象包装类

基本数据类型对象包装类: 为了方便操作基本数据类型值,将其封装成了对象,在对象中定义了属性和行为丰富了该数据的操作. 用于描述该对象的类就称为基本数据类型对象包装类. 基本数据类型 包装类 byte Byte short Short int Integer long Long float Float double Double char   Character boolean Boolean 该包装对象主要用于基本类型和字符串之间的转换. 基本类型-->字符串 1.基本类型数据+"&quo

Objective-C - 类方法与对象方法

类方法与对象方法 /* 对象方法 1> 减号 - 开头 2> 只能由对象来调用 3> 对象方法中能访问当前对象的成员变量(实例变量) 类方法 1> 加号 + 开头 2> 只能由类(名)来调用 3> 类方法中不能访问成员变量(实例变量) 类方法的好处和使用场合 1> 不依赖于对象,执行效率高 2> 能用类方法,尽量用类方法 3> 场合:当方法内部不需要使用到成员变量时,就可以改为类方法 可以允许类方法和对象方法同名 */ @interface Perso

14-oc类方法和对象方法的区别?

对象方法以-开头, 类方法以+开头 对象方法必须用对象调用, 类方法必须用类来调用 对象方法中可以直接访问属性(成员变量), 类方法中不可以直接访问属性(成员变量) 类方法和对象方法可以进行相互调用(展示代码) 对象方法中可以直接调用类方法 类方法中间接调用对象方法 (注意: 不建议这样使用) 类方法中可以直接调用其它类方法 对象方法中可以直接调用对象方法

黑马程序员--Objective-C类方法与对象方法、区别、与调用-我之见解

------<a href="http://www.itheima.com" target="blank">Java培训.Android培训.iOS培训..Net培训</a>.期待与您交流! ------- 类方法. 1. 特点: 以加号( + )开头, 调用格式:  [类名  方法名] 类方法的好处:不需要创建实例对象,直 接通过类名访问,节省空间 ,提高了效率 2.注意事项: 类方法可以和实例方法同名, 相互之间互不影响 类方法可以从父类

OC -- 类方法和对象方法

#import <Foundation/Foundation.h> @interface Person : NSObject @property (nonatomic, retain) NSString *name; @property (nonatomic, assign) int age; - (void)print;       // 对象方法 + (void)introduce;   // 类方法 @end @implementation Person - (void)print{ /