黑马程序员------OC类的封装 继承 多态
2015-07-29 23:30
387 查看
——Java培训、Android培训、iOS培训、.Net培训、期待与您交流!
——-
在oc语言中使用@interface和@implementation来处理类
类的封装
变量默认只能被当前类的对象方法访问。*/
//不封装的缺点:
//当一个类把自己的属性暴露在外部的时候,那么该类就会失去对属性的管理权。
/*
get方法的实现规范
get的方法一定是一个对象方法
get 方法一定有返回值,返回值类型和实例变量的类型一致
get 方法名,是去掉换线的实例变量名
get方法
一定没有参数
get 方法的实现一定是返回实例变量值,
以后获取name的值,都同意的使用name的get方法
-(NSString *)name
-(int)age;
//(int)_age;
-(sex)sex;
//-(sex)_sex;
*/
#import <Foundation/Foundation.h>
@interface Gun :NSObject // 对象的声明
{
int _bulletcount ;
}
-(void)shoot ;
-(void)setBulletCount;
@end
@implementation Gun //对象的实现
-(void)shoot{
if (_bulletcount >
0){ //调用函数的封装
_bulletcount--;
NSLog(@"tutu...剩余子弹:%d",_bulletcount
);
}else{
NSLog(@"没有子弹");
}
}
-(void)setBulletCount :(int)bulletCont{
if (bulletCont>0){
_bulletcount=bulletCont; //函数的封装
}else {
_bulletcount=0;
}
}
@end
int main(int argc,
const char * argv[]) {
@autoreleasepool {
Gun *gun =[Gun
new];
// gun ->_bulletcount = 3;
[gun
setBulletCount:3];
[gun
shoot ];
[gun
shoot ];
[gun
shoot ];
[gun
shoot ];
}
return 0;
}
自类不能定义和父类同名的变量,但同时可以继承父类的变量.
@interface dog:animal
{
int _tuiNum ;
}
oc 继承体系中的方法调用顺序
1、在自己类中找
2、如果如果没有去父类中找
3、如果父类么有,还往上找,直到找到为止,直到基类
4、如果基类(NSObject)中没有就会报错
多态就是某种事物的多种形态
猫: 猫--》动物
狗: 狗--》动物
男人:男人--》人--》高级动物
女人:女人--》人--》高级动物
程序中的多态:不同的对象以自己的方式相应相同的名称方法的能力称为多态
父类的声明变量指向子类对象
代码体现:用父类类型的指针指向了子类的对象,这就是多态。
多态的主要好处就是简化了编程的接口,它容许在类和类之间重用一些习惯性的命名。而不用为每个新加的函数命名一个新的
名字。这样,编程接口就是一些抽象的行为的集合,从而和实现接口的类的区分。
多态也使得代码可以区分不同的对象中而不用试图在一个函数中考虑到所有的对象。这样的您的代码扩展性和复用性就会更好
些 。当有个新的情景出现时,你就不用把现有的代码全数更改,而只需要增加一个新的类和新的同名的方法。
假设子类Dog有一个特有的方法bark
【dog bark】;
Animal *an2=【Dog new】;
【(Dog*)an2 bark 】;//把父类的指针,强制类型转换
2、如果不存在多态,父类是不可以访问子类特有的方法的
——-
类的封装
/*在oc语言中使用@interface和@implementation来处理类
类的封装
变量默认只能被当前类的对象方法访问。*/
//不封装的缺点:
//当一个类把自己的属性暴露在外部的时候,那么该类就会失去对属性的管理权。
/*
get方法的实现规范
get的方法一定是一个对象方法
get 方法一定有返回值,返回值类型和实例变量的类型一致
get 方法名,是去掉换线的实例变量名
get方法
一定没有参数
get 方法的实现一定是返回实例变量值,
以后获取name的值,都同意的使用name的get方法
-(NSString *)name
-(int)age;
//(int)_age;
-(sex)sex;
//-(sex)_sex;
*/
#import <Foundation/Foundation.h>
@interface Gun :NSObject // 对象的声明
{
int _bulletcount ;
}
-(void)shoot ;
-(void)setBulletCount;
@end
@implementation Gun //对象的实现
-(void)shoot{
if (_bulletcount >
0){ //调用函数的封装
_bulletcount--;
NSLog(@"tutu...剩余子弹:%d",_bulletcount
);
}else{
NSLog(@"没有子弹");
}
}
-(void)setBulletCount :(int)bulletCont{
if (bulletCont>0){
_bulletcount=bulletCont; //函数的封装
}else {
_bulletcount=0;
}
}
@end
int main(int argc,
const char * argv[]) {
@autoreleasepool {
Gun *gun =[Gun
new];
// gun ->_bulletcount = 3;
[gun
setBulletCount:3];
[gun
shoot ];
[gun
shoot ];
[gun
shoot ];
[gun
shoot ];
}
return 0;
}
类的继承
继承的注意事项自类不能定义和父类同名的变量,但同时可以继承父类的变量.
@interface dog:animal
{
int _tuiNum ;
}
oc 继承体系中的方法调用顺序
1、在自己类中找
2、如果如果没有去父类中找
3、如果父类么有,还往上找,直到找到为止,直到基类
4、如果基类(NSObject)中没有就会报错
类多态的概念和条件
什么是多态?多态就是某种事物的多种形态
猫: 猫--》动物
狗: 狗--》动物
男人:男人--》人--》高级动物
女人:女人--》人--》高级动物
程序中的多态:不同的对象以自己的方式相应相同的名称方法的能力称为多态
多态的条件
多态的条件:有继承关系,有方法重写父类的声明变量指向子类对象
代码体现:用父类类型的指针指向了子类的对象,这就是多态。
多态的优点
多态的主要好处就是简化了编程的接口,它容许在类和类之间重用一些习惯性的命名。而不用为每个新加的函数命名一个新的
名字。这样,编程接口就是一些抽象的行为的集合,从而和实现接口的类的区分。
多态也使得代码可以区分不同的对象中而不用试图在一个函数中考虑到所有的对象。这样的您的代码扩展性和复用性就会更好
些 。当有个新的情景出现时,你就不用把现有的代码全数更改,而只需要增加一个新的类和新的同名的方法。
多态的注意点
1、如果存在多态,父类是可以访问子类特有的方法假设子类Dog有一个特有的方法bark
【dog bark】;
Animal *an2=【Dog new】;
【(Dog*)an2 bark 】;//把父类的指针,强制类型转换
2、如果不存在多态,父类是不可以访问子类特有的方法的
相关文章推荐
- 黑马程序员------OC @property 关键字及构造方法的使用
- 黑马程序员------oc之面向对象特性 封装、多态、继承等
- 黑马程序员——System类常用方法及流对象操作规律
- 那些年的面试总结
- 数据库面试题——比赛数据查询
- 程序员(攻城狮)成长之路
- (剑指Offer)面试题45:圆圈中最后剩下的数字
- 黑马程序员----java循环结构总结
- 黑马程序员——Java基础---常见对象2
- 黑马程序员----java基础运算符选择结构总结
- 40个Java集合面试问题和答案
- 黑马程序员------OC基础语法的使用
- 字符串的全排列和组合算法
- 软件测试面试题—选择题2
- struct/class/union内存对齐原则及面试题实例分析
- 黑马程序员----this与super
- 黑马程序员———Java AWT基础及布局管理
- 《写给想当程序员的朋友》
- 黑马程序员———java socket编程
- 黑马程序员——— 多态