黑马程序员——【OC】面向对象的三大特性
来源:互联网 发布:linux复制为多个文件 编辑:程序博客网 时间:2024/06/11 14:21
------- android培训、java培训、IOS培训期待与您交流! ----------
OC 面向对象的三大特性:封装、继承、多态。
1. 封装
set方法
作用:提供一个方法给成员变量设置值, 并且还可以在方法里对参数进行过滤。
命名规范:
1>方法名必须以set开头
2> set后面跟上成员变量名称,并且成员变量的首字母必须大写
3>返回值一定是void
4>一定要接收一个参数,而且参数类型跟成员变量的类型一致
5>形参的名称不能跟成员变量名一样
注意:使用了set方法后,成员变量前尽量不要用@public
例子: - (void) setAge: (int )age {} //这里简单的写了一个设置年龄的set方法的语句
get方法
作用:返回对象内部的成员变量
命名规范:
1>一定有返回值,并且返回值类型与成员变量类型一致
2>方法名跟成员变量名一样
3>不接受任何参数
例子: - (int) age {} // 同样简单的写了一个返回年龄的get方法语句
△成员变量的命名规范
1>一定要以下划线 _ 开头 eg:int _age;
2>要让成员变量名称与get方法的名称区分开
3>可以跟区部变量区分开(一看到下划线开头的变量,一般都是成员变量)
△类方法与对象方法
两者的区别:
1> - 开头的是对象方法,+ 开头的是类方法
2> 对象方法只能由对象调用,类方法只能由类调用
3>对象方法能访问当前对象的成员变量,类方法中则不可以
注意:允许类方法和对象方法同名
类方法的好处和使用场合:
1>不依赖对象,执行效率高
2>能用类方法的情况下尽量使用类方法
3>场合:当类方法中不需要使用成员变量时
△self关键字
首先self是个指针,指向调用当前方法的对象
用途:
1>可以利用self ->成员变量名 来访问当前对象内部的成员变量
2>[self 方法名]可以调用其他对象方法\类方法
使用注意:合理使用self,否则会造成死循环
2. 继承
例如:@interface A : B
{
}
上 面的例子就说明:类A继承了类B,同时A拥有了B里面所有的成员变量和方法。那么类B就称之为父类,类A 则为子类
好处:避免重复的代码,建立了类与类之间的联系
使用注意:
1>基本上所有的类的根类都是NSObject
2>子类和父类不允许有相同的成员变量,且父类的声明放在子类的前面
3>例如 a对象调用run方法时 即[a sun],首先在子类中找,如果没有再去父类中找,如果还是没有继续往上找(可以理解为父类的父类)
继承的使用场合:
1>当两个类拥有相同属性和方法时,就可以将相同的部分抽取到一个父类中
2>当A类完全拥有B类中的部分属性和方法时,可以考虑让B 类继承A类(并不是绝对的,还可以利用 组合)
△重写
定义:子类重新实现父类中的方法,会覆盖父类中的操作
缺点:耦合性太强(2个类之间的联系太密切)
组合和继承的区分:
可以简单理解为:
1> XXX 是XXX 的时候可以使用继承(比如:狗(对象)是动物(对象))
2> XXX拥有XXX的时候考虑使用组合(比如:一个圆(对象)拥有一个点(对象))
继承的关键字:super
简单示例:[super run] // 调用父类中的run方法
作用:
1>直接调用父类中的某个方法
2>当super处在对象/类的方法中时,就会调用父类中的对象/类方法
使用场合:子类重写父类的方法时想保留一些父类的操作
3. 多态
多态即OC对象中拥有多种形态,多态必须是在继承的条件下使用的,不继承,无多态。
说明:
1>父类指针指向子类对象
2>调用方法时会自动检测对象的真实类型(这里为Dog对象)
好处:如果参数中使用的是父类类型,可以传入父类和子类的对象,节省了代码
局限性:父类类型的变量不能直接用来调用子类特有的方法,必须强转为子类类型的变量后,才能直接调用。
例如:
Animal * a = [Dog new];
Dog *d = (Dog *)a;
- 黑马程序员—OC语言面向对象三大特性
- 黑马程序员——OC基础——面向对象的三大特性(三)
- 黑马程序员--------OC面向对象的三大特性
- 黑马程序员——OC基础——面向对象的三大特性(一)
- 黑马程序员——OC—面向对象的三大特性
- 黑马程序员——【OC】面向对象的三大特性
- 黑马程序员—OC语言基础—面向对象的三大特性(1)
- 黑马程序员—OC语言基础—面向对象的三大特性(2)
- 黑马程序员——OC学习笔记03 面向对象2 面向对象的三大特性
- 黑马程序员——面向对象的三大特性
- 黑马程序员—面向对象的三大特性
- 黑马程序员——OC基础---面向对象(思想,类,对象,三大特性)
- 黑马程序员——OC面向对象三大特性——封装,继承,多态。
- 黑马程序员——OC面向对象三大特性——封装,继承,多态。
- 黑马程序员————OC面向对象_三大特性之封装
- 黑马程序员——OC语言基础——面向对象三大特性之封装
- 黑马程序员——OC语言基础——面向对象三大特性之继承
- 黑马程序员——OC语言基础——面向对象三大特性之多态
- poj 2250/3356 LCS(文章LCS/AGTC)
- 指针与数组
- 体验父爱之旅 深悟人生真谛
- 20150317第一天
- 《烦恼都是自找的》之生命的净化器
- 黑马程序员——【OC】面向对象的三大特性
- file.seek(),file.split(),file,sorted(),file.pop用法
- Android 下拉刷新框架实现
- 【网络协议】互联网协议入门(二)
- linux内存接口函数
- duilib 控件属性列表
- UVA - 10759 Dice Throwing
- Hibernate和Mysql5.5创建表出错——type=InnDB/schema export unsuccessful
- dispatch_queue_t初学