类和对象
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了类和对象相关的知识,希望对你有一定的参考价值。
面向过程和面向对象
面向过程:注重过程,分析解决问题的步骤,依次调用函数。C语言 面向对象:注重对象,分析解决问题需要参与的对象,各个对象的作用。OC、C++、Jave等 面向对象的优点: 1、可扩展性 2、重用性 3、可降低代码的耦合度,提高代码的可移植性 类:具有相同特征(静态)及行为(动态)的事物的抽象 对象:对象是类的实例,类是对象的类型,对象是具象概念。 类的定义分两个部分:接口部分和实现部分。 接口部分:声明类的特征和行为,在.h文件中 实现部分:行为的具体实现,方法,对象实例初始化,在.m文件中 接口部分标志:@[email protected] 所有声明类的特征(成员变量)和行为(方法)都在里面 @interface Car : NSObject @end Car是定义的类名,冒号后面是继承,NSObject是Car类的父类,NSObject是OC中的根类。 类的特征定义在{}内部,常见OC的数据类型有 字符串类型(NSString),写法NSString *_name,成员变量名以下划线开头,占位符%@;整型(NSInteger),写法NSInteger _age,OC中的整型在64位操作系统下为长整型,占位符%ld;浮点型(CGFloat),写法CGFloat _score,在64位操作系统下为双精度,占位符%lf。 {}外声明类的行为,及类的方法 OC的方法只有两种:类方法(+)和实例方法(-) 类方法只能被类使用,类方法中不能使用实例变量 实例方法只能对象使用 加号方法和减号方法可以互相调用,调用时需要类名和实例化变量 而当对象定义成静态全局变量时,可被类方法调用
方法的声明(如图)
方法名:replaceObjectAtIndex: withObject: 注意:类中不能出现同名方法 “:”标识参数,不能省略,冒号也是方法名的一部分 参数之间的空间也是要去掉的 实现部分标志:@[email protected] 类行为的具体实现即方法的实现 @implementation Car Car代表类名 初始化的方法,返回值用instanceType和id没有什么区别,编译器会自动将id转化为InstanceType id和instanceType的异同 1、相同点:都可以作为方法的返回值类型 2、不同点: ①instanceType可以返回和方法所在类相同类型的对象,id只能返回未知类型的对象 ②instanceType只能作为返回值,不能像id那样作为参数 重写初始化方法: - (instanceType)init { _name = @“哈哈”; return self;self代表外界执行该方法的对象 } 自定义初始化方法:
OC中输出函数NSLog(@“”); main.m中 对象进行实例步骤 1、开辟空间 2、初始化 Car *car = [[Car alloc] init]; 1、开辟空间:alloc 在堆区域开辟存放Car类对象的内存空间,将首地址传给在栈区的指针car,alloc是系统的自己的类方法。 2、初始化:将开辟好的堆区域上的对象中的实例变量,赋初值为0,init是实例方法 OC有消息发送机制 [receiver message] - 减号message由对象来调用;+ 加号message由类来调用 实例变量的可见度有三种:
默认为受保护的,@protected
setter和getter方法访问的单一实例变量 这两者相对应,一个实例对象对应一对。
在.h文件中只声明了实例变量之后,给实例变量赋值取值 赋值:setValue:@需要的值 key:@实例变量名(name) 或 setValue: key: 取值:valueForKey:实例变量名(name)
以上是关于类和对象的主要内容,如果未能解决你的问题,请参考以下文章