类和对象

来源:互联网 发布:淘宝没有生产许可证 编辑:程序博客网 时间:2024/05/21 10:41

1.类的定义:(具有相同特性和行为的事物的抽象)

           (1).OC中类的定义分为两个部分:接口部分和实现部分

                          接口部分:对外声明类的特征和行为。(.h文件中)

                          接口部分标志:@interface····@end  —— 作用:声明类的实例变量(成员变量)和方法,即特征和行为。

                          接口部分包含的内容:类名、父类名、实例变量、方法等;

                          实现部分:行为的具体实现。(.m文件中)

                          实现部分标志:@implementation ·······@end —— 作用:类行为的具体实现(方法的实现)。



2.类和文件

           (1).类的定义过程需要进行分文件放置。文件分为.h (接口文件) .m (实现文件)



 3.对象的创建(对象是类的实例,通过类来创建对象)

               创建对象分两步:

                       (1).分配内存空间:根据类中声明的实例变量为对象在堆区分配内存,并返回首地址;

                       (2)开辟空间:+(instancetype)alloc;

                                “+”表示方法是类方法,只能由类调用。instancetype返回值类型,可以用id(任何对象类型)替代;

                       (2).初始化:为对象的实例变量设置初始值;—(instancetype)init;

                                  “—”对象方法,对象调用。”instancetype“返回值类型;

                                   



4.instancetype和id的区别

                  (1).instancetype可以返回和方法所在类相同类型的对象吧,id只能返回未知类型的对象。

                   (2).instancetype只能作为返回值和参数,id还可以用来定义变量。

                   (3).instancetype会告诉编译器当前的类型,但id对于编译器却是无类型的,调用任何方法不会给出错误提示。

                   (4).对于init方法,id和instancetype是没有区别的,因为编译器会把id优化成instancetype。当明确返回的类型就是当前Class时,使用instancetype能避免id带来的编译不出的错误情况。


5.面向对象的三个特性:

           (1).面向对象具有良好的可扩展性和重用性;

           (2).面向对象可以降低我们代码的耦合度,提高代码的可移植性;

           (3).面向对象接近于日常生活和自然的思考方式,可以提高我们软件开发的效率和质量;

4.实例变量的可见度:



本类

子类

其他类

@public

可以直接访问实例变量

可以直接访问实例变量

可以直接访问实例变量

@private

可以直接访问实例变量

不可以访问实例变量

不可以访问实例变量

@protected

可以直接访问实例变量

可以直接访问实例变量

不可以访问实例变量



0 0
原创粉丝点击