类和对象
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的方法只有两种:类方法(+)和实例方法(-) 类方法只能被类使用,类方法中不能使用实例变量 实例方法只能对象使用 加号方法和减号方法可以互相调用,调用时需要类名和实例化变量 而当对象定义成静态全局变量时,可被类方法调用
![技术分享](https://image.cha138.com/20200614/0d045566b2174267996d45601931ba53.jpg)
![技术分享](https://image.cha138.com/20200614/683d5dc805674aa3afb80b7ab3f368a4.jpg)
方法名: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代表外界执行该方法的对象 } 自定义初始化方法:
![技术分享](https://image.cha138.com/20200614/08a386bc62744c9fa8c889ff1bec4269.jpg)
![技术分享](https://image.cha138.com/20200614/bbdc2acd3259429ca3566f9de999c747.jpg)
默认为受保护的,@protected
![技术分享](https://image.cha138.com/20200614/73f69e22c23a4c2d80b507169187a1a7.jpg)
![技术分享](https://image.cha138.com/20200614/d0c173d0268c4a1fa2164dc53a962ade.jpg)
![技术分享](https://image.cha138.com/20200614/2b892d412d1e4e9094fa1c9d22e4829a.jpg)
在.h文件中只声明了实例变量之后,给实例变量赋值取值 赋值:setValue:@需要的值 key:@实例变量名(name) 或 setValue: key: 取值:valueForKey:实例变量名(name)
![技术分享](https://image.cha138.com/20200614/bf0f88e8081f425693eda8ced0527bcb.jpg)
以上是关于类和对象的主要内容,如果未能解决你的问题,请参考以下文章