黑马程序员--类的三大特性(多态、继承、封装)
来源:互联网 发布:数据库封装统一接口 编辑:程序博客网 时间:2024/06/05 14:12
——Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ——-
/*
多态
1.没有继承就没有多态
2.代码的体现:父类类型的指针指向子类对象
3.好处:如果函数或方法变量参数中使用的是父类类型,可以传入父类、子类对象
4.局限性:
1》父类类型的变量 不能 直接调用子类特有的方法,必须强转为子类类型变量后,才能直接访问子类特有的方法
*/
#import <Foundation/Foundation.h>@interface Animal : NSObject- (void)eat;@end@implementation Animal- (void)eat{ NSLog(@"吃东西----");}@end@interface Dog : Animal@end@implementation Dog- (void)eat{ NSLog(@"Dog吃东西----");}@endint main(){ Dog *d = [Dog new];//dog 类型 // 多态:父类指针指向子类对象 Animal *a = [Dog new]; //多态的局限性:父类类型的变量 不能用来调用子类的方法 Dog *dd = (Dog *)aa;//int a = (int)1.09 强制转换 [a eat]; //调用的是Dog里面的方法 eat,但不能这么用 return 0;}
/*
继承的适用场合
1》当两个类拥有相同的属性和方法的时候,就可以将相同的东西抽取到一个父类中
2》当A类完全拥有B类部分属性和方法是,可以考虑让B类继承A类(不一定)
****student 可以继承 person student和score 只能组合
例如:
@interface Student : NSObject { Score *_score; int _age; //[super walk]调用父类方法walk } super作用:直接调用父类中的某个方 法和self想似
继承的好处:
1》抽取重复代码
2》简历了类之间的关系
3》子类可以拥有父类中的所有成员变量和方法
2.注意点
1》基本上所有的根类是NSObject
*不允许子类和父类有相同的成员变量(方法可以一样)
*父类必须声明在子类的前面
*就近原则
坏处
耦合性:之间联系太强
*/
#import <Foundation/Foundation.h>//****Animal的声明******@interface Animal : NSObject{ int _age; double _weight;}- (void)setAge:(int)age;- (int)age;- (double)setWeight:(double)weight;- (double)weight;@end//Animal的实现********************@implementation Animal- (void)setAge{ _age = age;}- (int)age{ return _age;}- (double)setWeight:(double)weight{ _weight = weight;}- (double)weight{ return _weight;}@end//********Dog*******//: Animal 继承了Animal,相当于拥有了Animal里面的所有的成员变量和方法// Animal称为Dog的父类// Dog称为Animal的子类@interface Dog :Animal@end@implementation Dog@end//******CAT*********8@interface Cat :Animal@end@implementation CAT@endint main(){ Dog *d = [Dog new]; [d setAge:10]; NSLog(@"age=%d", [d age]); return 0;}
封装
#import <Foundation/Foundation.h>@interface Student : NSObject//只允许外界访问,不允许修改 值提供get方法{ //成员变量尽量不要使用@public // @public int _age;成员变量的命名规范:一定要以下划线 _ 开头}/*set 方法 1.作用:提供一个方法给外界设置成员变量值 2.命名规范: 1》方法名必须以set开头 2》set 后面跟上成员变量的名称,成员首字母必须大写 3》返回值一定是void 4》一定要接受一个参数,而且参数类型一定要跟成员变量一致 5》形参的名称不能与成员变量名一样 */- (void)setAge:(int)Age;- (void)study;/*get方法 1.作用:返回对象内部的成员变量 2命名规范: 1》肯定又返回值,返回值肯定与成员变量类型一致 2》方法名与成员变量名一样 3.》不需要接受任何参数 */- (int)age;@end@implementation Student//set方法的实现- (void)setAge:(int)newAge{ //对传进来的参数进行过滤 if (Age <= 0) { Age = 1; } _age = Age;}- (void)study{ NSLog(@"%d岁的学生在学习",age);}- (int)age{ return _age;}@endint main(){ Student *stu = [Student new]; [stu setAge:10]; //[stu study]; NSLog(@"学生的年龄是%d岁",[stu age]); return 0;}
0 0
- 黑马程序员--OC的三大特性 封装 继承 多态
- 黑马程序员_Java三大特性(封装 继承 多态)
- 黑马程序员--类的三大特性(多态、继承、封装)
- 黑马程序员—IOS基础之OC—类的三大特性封装、继承、多态
- 黑马程序员_OC语言之面向对象的三大特性(封装、继承、多态)
- 黑马程序员关于面象对象以及它的三大特性:封装 继承 多态
- 黑马程序员——OC的三大特性:封装,继承,多态
- 黑马程序员——OC的三大特性:封装、继承、多态
- 黑马程序员——OC三大特性(继承、多态、封装)
- 黑马程序员---OC面向对象三大特性(封装、继承、多态)
- 黑马程序员——OC篇(二)面向对象的三大特性(封装、继承、多态)
- 黑马程序员-OC之面向对象的三大特性:封装、继承和多态
- 黑马程序员(三)面向对象的三大特征封装、继承、多态
- 黑马程序员 《ios零基础教程》--“三大特性”-封装、继承、多态 2014-4-22总结
- 黑马程序员——OC面向对象三大特性——封装,继承,多态。
- 黑马程序员——OC面向对象三大特性——封装,继承,多态。
- 黑马程序员——OC三大特性(继承、多态、封装)
- 黑马程序员-④面向对象三大特性封装、继承、多态
- usleep 微妙
- iOS 设计模式系列:Singleton – 单例模式
- js 查看checkbox选择了多少个
- IOS8 UITableViewCell线填充方法 不显示多余cell分割线
- 淘宝metamq文档
- 黑马程序员--类的三大特性(多态、继承、封装)
- Add Binary
- C/C++_两种函数不能重载的情况
- 字节序问题--大端法小端法
- 3DES 原理
- 平面设计颜色库
- iOS 设计模式系列:Facade – 外观模式
- nyoj 757 期末考试【优先队列】【快排】
- Tomcat配置两个端口