认识类与对象

1.面向过程和面向对象的区别

面向过程:指解决一个问题具体化、流程化,一步一步的来,解决问题注重实现的过程,完整的记录解决问题的全部步骤。

面向对象:分析解决问题直接参入的对象,模型化,抽出一个类,只需要对外提供一个功能接口,想要什么方法直接调用就好了,不在意内部实现的过程。

相比两者,一个注重过程,一个注重结果,OC就是面对对象的语言,所以比较C简单一点。

2.类和对象

类:具有相同特征和行为的事物的抽象,简单的讲就是物以类聚的类,例如(人类,狗类,猫类、羊类)。

对象:这个对象不是指女朋友,哈哈,万物皆对象,对象就是某一类的实例,类是对象的类型,例如(喜羊羊是一个羊对象,是羊类中的一个具体实例)。

定义一个类,Xcode会自动生成一个.h和.m文件,两个文件管理一个类,.h称为接口文件,.m称为实现文件。在接口文件中暴露出去的属性和方法外界都可以访问,@interface  @end 对外声明类的特征和行为。实现文件:@implementation    @end 对内实现行为(内部的具体实现)。

生成对象,通过类生成一个实例对象的步骤,首先调用alloc 方法,申请一块内存空间,在调init 方法,进行初始化,对象创建完成之后可以使用点语法修改对应的属性。也可以使用new直接生成对象,实质上是执行了alloc 和 init方法。

类方法和对象方法,类方法方法类型符号(+)只能类使用,对象(实例)方法方法类型标识符(-)只能对象使用。类方法比实例方法效率更高。

3.面向对象的三大特征

只要是面向对象的语言都具备这样三个特征,即封装、继承、多态。

封装:这个特征是编程的最高境界,检验是否是大神的唯一标准,简单来说就是将属性和方法封装在一起,防止出现垃圾的重复代码,给外界提供最简单的接口,满足最多的需求。

多态:一句话概括即父类指针指向子类对象,调用不同子类的同一方法,会执行不同结果。例如动物类的两个实例分别指向一个狗对象和猫对象,执行同一个eat方法,打印结果:狗吃肉,猫吃鱼。

继承:OC只支持单继承,C++支持多继承,单继承的意思只有一个父类,上层是父类下层是子类,继承父类所有公有的属性和方法,OC中的根类是NSObject(基类,所有对象的祖先),子类可以重写父类的方法(覆盖)。

4.初始化方法和构造方法

init初始化:当我们想创建一个实例对象时就已经具备一些属性,我们可以重写init方法,苹果粑粑官方要求,我们再重写这个方法或者自定义构造方法的时候,必须先调[super init],先初始化父类的一些基本属性,假如父类初始化失败,如果在执行子类的一些操作毫无意义。我们可以自定义初始化方法,加上对应的参数,原则上我们都要以initWith开头,代码规范提高可读性。

类方法初始化对象:我们可以提供一个简单的类方法,用id或者instancetype类型作为返回值,将对象初始化的操作封装到方法体中,直接返回一个对象。

id和instancetype区别:两者万能指针,id非常强大,可以用来做变量和返回值类型,但是在编译的时候不能确定其真实的类型,如果调用一个对象单一的方法,编译完全没问题,在运行的过程中可能会崩溃。instancetype只能做返回值类型,不能作为参数类型,所以苹果推荐我们如果是返回值类型最好使用instancetype。



 


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值