黑马程序员——Objective-C——封装、继承、多态
2014-12-07 14:33
471 查看
———Java培训、Android培训、iOS培训、.Net培训、期待与您交流!
———
OC的三大特性:封装、继承、多态。
一、封装
1.set方法和get方法
1>set方法:
一般不在成员变量名前面使用@public、@protected等关键字修饰,而是使用set方法来为对象提供成员变量的值。在set方法的内部也可以对一些不合理的赋值进行筛选过滤。
set方法的作用:为外界提供一个设置成员变量值的方法
命名规范:
a. 方法名必须以set开头
b. set后面跟上成员变量的名称,首字母大写
c. 返回值一定是void
d. 一定要接收一个参数,而且参数类型需要和成员变量的类型一致
e. 形参名不能喝成员变量名一样(苹果官方推荐成员变量名前加_以示区分)
set方法的好处:
a. 不让数据暴露在外,保证了数据的安全性
b. 对设置的数据进行过滤
2>get方法
作用:为调用者返回对象内部的成员变量
命名规范:
a. 一定有返回值,返回值的类型和成员变量的类型一致
b. 方法名和成员变量名一样
c. 不需要接收任何参数
3>set方法和get方法的使用:
4>set和get方法的使用注意
a. 在实际的开发中,不一定set和get方法都会提供,如果内部的成员变量比如学生的学号这样的数据只允许外界读取,但是不允许修改的情况,则通常只提供get方法而不提供set方法。
b. 成员变量名的命名以下划线开头,get方法名不需要带下划线,使用下划线开头有两个好处:(1)与get方法的方法名区分开来;(2)可以喝一些其他的局部变量区分开来,下划线开头的变量,通常都是类的成员变量。
5>self关键字
记住一点:谁调用的self,self就代表谁。即类调用self就代表类,对象调用self就代表对象。
二、继承
1>继承的好处:
a. 抽取出了重复的代码
b. 建立了类和类之间的联系
c. 子类可以拥有父类中的所有成员变量和方法
2>继承的缺点:
耦合性太强,也就是说如果父类没了,子类就不能用了
3>注意点
a. 基本上所有类的根类是NSObject
b. 父类必须声明在子类的前面
c. 父类和子类不能拥有相同的成员变量
d. 调用某个方法时,优先去当前类中找,如果找不到,在去父类中找
e. OC中的类只能单继承
4>继承实例练习:
三、多态
多态即为一类事物的多种形态。多态在代码中的体现,即为多种形态,必须要有继承,没有继承就没有多态;在使用多态时,会进行动态检测,以调用真实的对象方法;多态在代码中的体现即父类指针指向子类对象。
1.多态的好处
用父类接收参数,节省代码
2.多态的局限性
不能访问子类的属性,但是需要时可以考虑强制转换
3.多态实例
代码简写:
———
OC的三大特性:封装、继承、多态。
一、封装
1.set方法和get方法
1>set方法:
一般不在成员变量名前面使用@public、@protected等关键字修饰,而是使用set方法来为对象提供成员变量的值。在set方法的内部也可以对一些不合理的赋值进行筛选过滤。
set方法的作用:为外界提供一个设置成员变量值的方法
命名规范:
a. 方法名必须以set开头
b. set后面跟上成员变量的名称,首字母大写
c. 返回值一定是void
d. 一定要接收一个参数,而且参数类型需要和成员变量的类型一致
e. 形参名不能喝成员变量名一样(苹果官方推荐成员变量名前加_以示区分)
set方法的好处:
a. 不让数据暴露在外,保证了数据的安全性
b. 对设置的数据进行过滤
2>get方法
作用:为调用者返回对象内部的成员变量
命名规范:
a. 一定有返回值,返回值的类型和成员变量的类型一致
b. 方法名和成员变量名一样
c. 不需要接收任何参数
3>set方法和get方法的使用:
// .h文件中 @interface Person : NSObject // 一般所有的类最终都要继承NSObject { int _age; NSString *_name; } // _age的set和get方法 - (void) setAge: (int)age; - (int) age; // _name的set和get方法 - (void) setName:(NSString *)name; - (NSString *)name; @end // 注意end不要漏掉 // .m文件中 @implementation Person // 方法的实现 - (void) setAge: (int)age { _age = age; } - (int) age { return _age; } - (void) setName:(NSString *)name { _name = name ; } - (NSString *)name { return _age; } @end // 同样不要漏掉
4>set和get方法的使用注意
a. 在实际的开发中,不一定set和get方法都会提供,如果内部的成员变量比如学生的学号这样的数据只允许外界读取,但是不允许修改的情况,则通常只提供get方法而不提供set方法。
b. 成员变量名的命名以下划线开头,get方法名不需要带下划线,使用下划线开头有两个好处:(1)与get方法的方法名区分开来;(2)可以喝一些其他的局部变量区分开来,下划线开头的变量,通常都是类的成员变量。
5>self关键字
记住一点:谁调用的self,self就代表谁。即类调用self就代表类,对象调用self就代表对象。
二、继承
1>继承的好处:
a. 抽取出了重复的代码
b. 建立了类和类之间的联系
c. 子类可以拥有父类中的所有成员变量和方法
2>继承的缺点:
耦合性太强,也就是说如果父类没了,子类就不能用了
3>注意点
a. 基本上所有类的根类是NSObject
b. 父类必须声明在子类的前面
c. 父类和子类不能拥有相同的成员变量
d. 调用某个方法时,优先去当前类中找,如果找不到,在去父类中找
e. OC中的类只能单继承
4>继承实例练习:
@interface Animal : NSObject // 所有的类最好都继承NSObject类 { int _age; } // set和get方法的声明 - (void) setAge:(int)age; -(int)age; // 声明一个对象方法 - (void) eat; @end // 一般写interface和implementation时就跟上一个end,防止忘记了 @implementation Animal // set和get方法的实现 - (void) setAge:(int)age { _age = age; } - (int)age { return _age; } - (void)eat { NSLog(“%d岁的动物在吃东西”,_age); } @end @interface Dog : Animal // 继承了Animal类 { double _weight; } // set和get方法的声明 - (void)setWeight(double)weight; -(double)weight; -(void)run; @end @implementation Dog // set和get方法的实现 - (void)setWeight(double)weight { _weight = weight; } -(double)weight { return _weight; } -(void)run // 声明一个对象方法 { NSLog(%d岁%f重的狗在跑,_age,_weight); } @end main.m中: // 这里先导入Animal和Dog类的头文件(.h) #import “Animal.h” #import “Dog.h” int main() { Animal *a = [Animal new]; a.age = 10; [a eat]; Dog *d = [Dog new]; d.age = 20; // 狗继承了Animal类,也有age属性 d.weight = 45.6; [d run]; [d eat]; // 调用父类的方法 return 0; }
三、多态
多态即为一类事物的多种形态。多态在代码中的体现,即为多种形态,必须要有继承,没有继承就没有多态;在使用多态时,会进行动态检测,以调用真实的对象方法;多态在代码中的体现即父类指针指向子类对象。
1.多态的好处
用父类接收参数,节省代码
2.多态的局限性
不能访问子类的属性,但是需要时可以考虑强制转换
3.多态实例
代码简写:
@interface Animal : NSObject // 动物类继承NSObject类 - (void)eat; @interface Dog : Animal // 狗类继承动物类 - (void)kanMen; @interface Cat : Animal // 猫类继承动物类 - (void)catchMouse; Animal *a1 = [Dog new]; // 父类类型指向子类对象 Animal *a2 = [Cat new]; Dog *d = (Dog *)a1; // 强制转换 Cat *c = (Cat *)a2; [d kanMen]; // 调用子类方法 [c cathchMouse];
相关文章推荐
- 黑马程序员—Objective-C基础_封装、继承、多态
- 【黑马程序员】iOS学习之路——Objective-C之封装、继承和多态
- 黑马程序员——Objective--C笔记之封装 继承 多态
- 黑马程序员——Objective-C的封装、继承与多态
- 黑马程序员Objective-C笔记:封装,继承,多态
- 黑马程序员—Objective-C学习—封装、继承、多态
- 黑马程序员——Objective-C语言知识整理——封装、继承与多态
- 【Objective-C学习笔记】OC三大特性:封装、继承、多态
- Objective-C入门11:类的三大特性(封装,继承,多态)
- 3.封装继承与多态之objective-c
- 黑马程序员-----------------面向对象_封装、继承、多态
- Objective-C语法之继承、封装、多态
- 黑马程序员——Java基础---面向对象(封装、继承、多态)
- 3.封装继承与多态之objective-c
- OC基础-零基础学习Objective-C:第二部分.封装、继承和多态
- 黑马程序员————Objective C——封装,继承,多态
- 黑马程序员_iOS开发之OC之面向对象之三大特性封装、继承和多态
- 黑马程序员—面向对象之封装、继承、多态
- [Objective-C] 封装、继承和多态
- 黑马程序员---object-c知识点总结(一)封装,继承,多态