OC基础-封装+继承+多态+self+类方法
来源:互联网 发布:淘宝卖家找小二介入 编辑:程序博客网 时间:2024/06/05 16:35
<1>(成员变量的)封装:set方法/get方法
1. set方法:可读可修改,为了不让外界随便的修改对象的属性值,所以通常成员变量都是被保护的(没有@public),所以通过设置一个set方法来“间接”的让对象来修改对象的成员变量值
2. set方法名的命名规范:
1> set方法名必须以set开头
2> set后面跟上成员变量的名称,成员变量的首字母必须大写
3> 返回值一定是void
4> 一定要接收一个参数,而且参数类型跟成员变量类型一致
3. get方法:只读不修改
命名规范
1> get方法名与成员变量名一致
2> 一定有返回值,没有参数
4. 类的成员变量名用下划线开头,这样可以与set,get方法名区分开,还可以跟局部变量区分开
<2>OC的弱语法(知道就行,要注意不要这样写)
<3>类方法
1. 优化程序的性能(不依赖于对象,执行效率高)
2. 类方法以‘+’开头,对象方法以‘—’开头(类方法要用类来调用,对象方法要用对象来调用)
3. 调用类方法不需要依赖于对象(调用类方法并没有创建对象),所以在类方法中不能访问成员变量(实例变量),在对象方法中可以访问成员变量(实例变量)
4. 类方法名可以与对象方法名一样
5. 能用类方法尽量用类方法
6. 使用场合:当方法内部不需要用到成员变量时,就可以改为类方法
7. 工具类中一般都用类方法(工具类中基本没有,不需要用到成员变量)
8. 方法之间可以互相调用(类方法可以调用对象吗?)
<4>self关键字:’自己‘的意思,也可以理解为‘当前的’
1. self是一个指针,指向了方法调用者,谁调用这个方法self就代表谁(代表调用者[对象]),用于当局部变量和成员变量一样时,局部变量影响对象成员变量的值
2. self还可以代表类
3. 可以用于set/get方法中,不过加不加self效果一样,是等价的
4. self->成员变量 [self 方法]
5. 使用不当self,会导致死循环(类似于java的this,但是有区别)
<5>继承(类之间的关系)[子类名 : 父类名]
1. 子类可以继承父类的全部成员变量和方法,所以对于两个类中的相同成员变量和方法可以设计定义一个类
2. 基本上所有的类的根类是NSObject
3. 注意:父类的声明必须要写到子类的前面
4. 父类与子类不允许有相同的成员变量,但是可以有相同的方法,对象调用方法的时候,优先在当前类中找方法,没有就找它的父类,找到执行返回,不会即执行子类的方法又执行父类的方法,也就是只会执行一次(就近原则),如果在子类中找不到就到父类中找 ;子类父类方法重名这叫做方法重写,子类重新实现父类中某个方法,可以覆盖父类以前的做法,而只调用子类的该方法
5. 如果类与类之间的耦合性太强是一个坏处(就是说联系太紧密)
6. 继承的使用场合:
1>当两个类拥有相同属性和方法的时候,就可以将相同的东西抽取到一个父类中
2>当A类完全拥有B类中的部分属性和方法时,就可以考虑让B类继承A类(但这种情况并不是时时都正确的,在语法上可能是正确的,但在类与类之间的关系上可能会出现逻辑上的错误,如果遇到这种情况可以考虑使用‘组合’,[在B类中用A类定义一个指向A类的指针],这样就在B类中包含了A类,从而B类中有了A类的属性及方法)
7. 搞清楚组合和继承的区别及关系
8. 类和组合都具有传递性(原因是:指针)
9. 继承是用‘:’,继承父类的成员变量以及方法
10. 组合是用类A在类B中定义一个A类型的指针变量,传递的参数(实际上是对象)也应是A类型的,可以在B类中 用B的A类型成员变量(即A类的一个对象)调用A类的方法
11. 如果子类的方法和父类的方法相似的话,可以考虑用重写
12. super关键字
1>当子类中重写了父类中的方法时,想在子类中重写的方法中调用父类的方法时可以使用super,super可以跨越当层类,跳到父类直接调用父类的方法
2>super调用的方法是类方法还是对象方法取决于它当前的处境
13. 使用场景:子类重写父类的方法时想要保留父类的一些行为(要覆盖但又不是完全覆盖时可以考虑用super)
<6>多态(多种形态)
1. 没有继承就没有多态
2. 多态:父类指针指向子类对象
3. 使用多态的好处:1.如果函数/方法的形参使用的是父类类型,则可以传入父类/子类的对象;2.当父类和父类的多个子类中有相同的方法时,可以通过使用多态来降低代码的冗余度
4. 局限性:父类类型的变量 不能直接调用子类特有的方法。如果要调用的话,必须先强转为子类类型的变量后,才能直接调用子类特有的方法
5. 在这里体现出了OC的弱语法,但是系统(编译器)还是会根据真实的类型来调用方法
6. /*
A *a = [B new]; //B类中有一个eat方法
[a eat]; //调用方法时,会动态的检测对象的真实类型,所以调用的是 B 的 eat 方法
*/
<7>NSString
1. 字符串的创建方式有多种
2. OC中字符串的输出格式 %@
3. 可以在Xcode的API开发文档中查看详细的NSString类的方法使用细节
4. 有几个常用的方法:length(不管是汉字还是字母,只输出字符的个数),stringWithFormat:参数
1. set方法:可读可修改,为了不让外界随便的修改对象的属性值,所以通常成员变量都是被保护的(没有@public),所以通过设置一个set方法来“间接”的让对象来修改对象的成员变量值
2. set方法名的命名规范:
1> set方法名必须以set开头
2> set后面跟上成员变量的名称,成员变量的首字母必须大写
3> 返回值一定是void
4> 一定要接收一个参数,而且参数类型跟成员变量类型一致
3. get方法:只读不修改
命名规范
1> get方法名与成员变量名一致
2> 一定有返回值,没有参数
4. 类的成员变量名用下划线开头,这样可以与set,get方法名区分开,还可以跟局部变量区分开
<2>OC的弱语法(知道就行,要注意不要这样写)
<3>类方法
1. 优化程序的性能(不依赖于对象,执行效率高)
2. 类方法以‘+’开头,对象方法以‘—’开头(类方法要用类来调用,对象方法要用对象来调用)
3. 调用类方法不需要依赖于对象(调用类方法并没有创建对象),所以在类方法中不能访问成员变量(实例变量),在对象方法中可以访问成员变量(实例变量)
4. 类方法名可以与对象方法名一样
5. 能用类方法尽量用类方法
6. 使用场合:当方法内部不需要用到成员变量时,就可以改为类方法
7. 工具类中一般都用类方法(工具类中基本没有,不需要用到成员变量)
8. 方法之间可以互相调用(类方法可以调用对象吗?)
<4>self关键字:’自己‘的意思,也可以理解为‘当前的’
1. self是一个指针,指向了方法调用者,谁调用这个方法self就代表谁(代表调用者[对象]),用于当局部变量和成员变量一样时,局部变量影响对象成员变量的值
2. self还可以代表类
3. 可以用于set/get方法中,不过加不加self效果一样,是等价的
4. self->成员变量 [self 方法]
5. 使用不当self,会导致死循环(类似于java的this,但是有区别)
<5>继承(类之间的关系)[子类名 : 父类名]
1. 子类可以继承父类的全部成员变量和方法,所以对于两个类中的相同成员变量和方法可以设计定义一个类
2. 基本上所有的类的根类是NSObject
3. 注意:父类的声明必须要写到子类的前面
4. 父类与子类不允许有相同的成员变量,但是可以有相同的方法,对象调用方法的时候,优先在当前类中找方法,没有就找它的父类,找到执行返回,不会即执行子类的方法又执行父类的方法,也就是只会执行一次(就近原则),如果在子类中找不到就到父类中找 ;子类父类方法重名这叫做方法重写,子类重新实现父类中某个方法,可以覆盖父类以前的做法,而只调用子类的该方法
5. 如果类与类之间的耦合性太强是一个坏处(就是说联系太紧密)
6. 继承的使用场合:
1>当两个类拥有相同属性和方法的时候,就可以将相同的东西抽取到一个父类中
2>当A类完全拥有B类中的部分属性和方法时,就可以考虑让B类继承A类(但这种情况并不是时时都正确的,在语法上可能是正确的,但在类与类之间的关系上可能会出现逻辑上的错误,如果遇到这种情况可以考虑使用‘组合’,[在B类中用A类定义一个指向A类的指针],这样就在B类中包含了A类,从而B类中有了A类的属性及方法)
7. 搞清楚组合和继承的区别及关系
8. 类和组合都具有传递性(原因是:指针)
9. 继承是用‘:’,继承父类的成员变量以及方法
10. 组合是用类A在类B中定义一个A类型的指针变量,传递的参数(实际上是对象)也应是A类型的,可以在B类中 用B的A类型成员变量(即A类的一个对象)调用A类的方法
11. 如果子类的方法和父类的方法相似的话,可以考虑用重写
12. super关键字
1>当子类中重写了父类中的方法时,想在子类中重写的方法中调用父类的方法时可以使用super,super可以跨越当层类,跳到父类直接调用父类的方法
2>super调用的方法是类方法还是对象方法取决于它当前的处境
13. 使用场景:子类重写父类的方法时想要保留父类的一些行为(要覆盖但又不是完全覆盖时可以考虑用super)
<6>多态(多种形态)
1. 没有继承就没有多态
2. 多态:父类指针指向子类对象
3. 使用多态的好处:1.如果函数/方法的形参使用的是父类类型,则可以传入父类/子类的对象;2.当父类和父类的多个子类中有相同的方法时,可以通过使用多态来降低代码的冗余度
4. 局限性:父类类型的变量 不能直接调用子类特有的方法。如果要调用的话,必须先强转为子类类型的变量后,才能直接调用子类特有的方法
5. 在这里体现出了OC的弱语法,但是系统(编译器)还是会根据真实的类型来调用方法
6. /*
A *a = [B new]; //B类中有一个eat方法
[a eat]; //调用方法时,会动态的检测对象的真实类型,所以调用的是 B 的 eat 方法
*/
<7>NSString
1. 字符串的创建方式有多种
2. OC中字符串的输出格式 %@
3. 可以在Xcode的API开发文档中查看详细的NSString类的方法使用细节
4. 有几个常用的方法:length(不管是汉字还是字母,只输出字符的个数),stringWithFormat:参数
0 0
- OC基础-封装+继承+多态+self+类方法
- OC基础——封装、继承、多态
- OC基础第三章: 继承 、 封装、多态
- OC-继承,多态,self,super
- OC--封装,继承,多态
- OC封装 继承 多态
- OC 封装 继承 多态
- OC基础day4-继承,self,super,多态,类对象,SEL类型,description,私有方法与私有变量,三种访问限制
- oc基础第三天-类方法、封装
- 黑马程序员-oc基础类方法 封装
- OC基础——面向对象(封装、继承、多态)
- 黑马程序员—IOS基础之OC—类的三大特性封装、继承、多态
- 黑马程序员——OC语言------set和get方法(封装)、类方法、self关键字
- OC语言---封装,继承,多态
- OC语言的第四天 static、self、super、继承、NSObject类、私有属性和私有方法、多态
- 类的封装 self语法 继承
- OC学习日记-继承,多态,私有属性、变量和方法,self,super,属性修饰符,description
- OC基础初始化方法,Set get方法,继承父类
- 转载 - 别再浪费时间了!如何从细节上真正节省用户的时间
- Chrome导入数字证书
- STL源码剖析——STL算法之find查找算法
- Flex4 新特性
- (转载)初窥Linux 之 我最常用的20条命令
- OC基础-封装+继承+多态+self+类方法
- 【AC自动机+矩阵快速幂】 POJ 2778 DNA Sequence
- 串口 COM口 USB-TTL RS-232 RS-485 不同标准 区别 释疑
- STL源码剖析——STL算法之merge合并算法
- 2014上海网络预选赛1011(LCT)HDU5052
- GCC笔记
- []2013年人人校园招聘笔试题
- hdu 1795(欧拉函数+二分搜索)
- STC 8051单片机扩展SRAM介绍、使用以及配置