OC面向对象

以前的编程方式为面向过程的,这种方式编写的程序代码可充分利用性差,可维护性也很糟糕,效率不理想。为了解决这个问题就出现了面向对象的编程方式,而且成为了现在的主流编程方式。

举个例子:把大象装进冰箱

面向过程(强调的是过程/动作):打开冰箱,存储大象,关闭冰箱;

面向对象(强调的是对象/实体):冰箱打开,大象存储,冰箱关闭;



面向对象就是一种编程方式,Objective-C为面向对象型编程语言,Cocoa为面向对象型框架。

意思就是在Cocoa框架下用Objective-C语言编写程序,Objective-C语言的编程方式是面向对象型的。



下面介绍面向对象的几个基本术语:类、实例、实例变量、类变量、方法、继承、对象。

(1)类:具有相同或相似性质的对象的抽象。对各种抽象进行归类,如窗口类,按钮类。

(2)实例:根据类生成的东西,称为实例。例如在窗口中显示的按钮,是根据按钮类生成的按钮实例,由类生成实例的过程,称为实例化。

(3)实例变量:用来表示实例的属性。例如按钮实例的宽度高度、按钮标题是通过变量来表示的。实例变量属于对象私有的,某一个对象将其值改变,不影响其他对象。

(4)类变量:也称为静态变量,也就是在变量前加了static的变量 。类变量是所有对象共有的,其中一个对象将它值改变,其他对象得到的就是改变后的结果。

(5)方法:也称为“接口”,让实例具有操作的手段。如按钮实例通过方法设置标题,点击按钮实例能实现功能。

                    方法分为实例方法和类方法。实例方法是给实例变量设置值的方法。类方法是对类整体进行处理的方法。

(6)继承:在继承既有类的基础上创建新的类,这个既有类称为父类或者超级类,而新创建的类称为子类。子类会继承父类的所有实例变量以及方法,而且可以追加自己独有的方法与实例变量,还可以改写父类的方法。

(7)对象:在Objective-C中,类和实例都可以被看做对象,分别称为类对象与实例对象。


总结生成实例实例方法使用实例变量设置实例,使实例具有功能,通过继承的方式,可以使用父类的所有实例变量和方法。

           上面的例子中,冰箱、大象是对象,冰箱打开、大象存储、冰箱关闭是方法



面向对象的三大特征:封装、继承、多态。

(1)封装:封装是将代码分成一个个相对独立的单元(类)。封装提供了一个有效的途径来保护数据不被破坏,在OC中,如果想让一个方法不被外界访问,只需要在.m文件中实现这个方法,不要在头文件中定义,意思是:该方法有实现,没定义,这样外界在导入头文件的时候,是没有这个方法的,保护了这个方法,但这个方法我们可以在自己的.m文件中使用。

(2)继承:通过继承父类,我们没有必要写重复的代码,提高了效率。

(3)多态:允许将子类类型的指针赋值给父类类型的指针。实现多态,有两种方式:覆盖和重载。

         覆盖:是指子类重新定义父类的虚函数的做法。

                    例如父类中有一个无参方法-sayHello,该方法返回“hello,儿子”,子类继承父类后,也就继承了该方法;

                    若子类不重写该方法,则在调用子类时,返回“hello,儿子”。

                    但如果子类也写了一个无参的方法-sayHello,该方法返回“hello,老爸”,这时调用方法-sayHello,会首先在子类里面找方法-sayHello,找                         到了则调用子类的,返回“hello,老爸”,覆盖父类的-sayHello方法。

         重载:是指允许存在多个同名函数,而这些函数的参数表不同(或许参数个数不同,或许参数类型不同,或许两者都不同)。

                    例如父类中有一个方法-sayHello,该方法返回“hello,儿子”,想要把“hello,儿子”变成“hello,老爸”,传入参数,返回“hello,老爸”。

                    这时子类继承父类,继承方法-sayHello,如果子类传入参数“hello,老妈”,则返回“hello,老妈”,

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值