黑马程序员——OC语言------继承、多态
来源:互联网 发布:网络自由与秩序申论 编辑:程序博客网 时间:2024/05/16 14:30
继承
一、继承的用法
继承到底有什么作用呢,以创建两种动物Cat和Dog类为例:
// Cat的声明@interfaceCat : NSObject{ @public int weight;}-(void)eat;@end //Cat的定义@implementationCat-(void)eat{ NSLog(@"吃后体重变为:%d", weight);}@end
// Dog的声明@interfaceDog : NSObject{ @public int weight;}-(void)eat;@end // Dog的定义@implementationDog-(void)eat{ NSLog(@"吃后体重变为:%d", weight);}@end
至此我们发现Cat和Dog两类有相同的属性和行为,所以抽出一个父类Animal(先抽取weight属性,再抽取eat方法)
//Animal的声明@interfaceAnimal : NSObject{ @public int weight;}-(void)eat;@end //Animal的定义@implementationAnimal-(void)eat{ NSLog(@"吃后体重变为:%d", weight);}@end
子类在父类的基础上拓充属性和方法,也就是子类继承父类
//Cat的声明@interfaceCat : Animal{ @public int height;}-(void)jump;@end // Cat的定义@implementationCat-(void)jump{ NSLog(@"跳的高度:%d ",height);}@end
//Dog的声明@interfaceDog : Animal{ @public int speed;}-(void)run;@end //Dog的定义@implementationDog-(void)run{ NSLog(@"奔跑的速度:%d", speed);}@end
注意:
1> 子类和父类不能有相同的成员变量。
2> 父类必须声明在子类前面。
3> 调用某个方法时,优先去当前的类中找,如果找不到,去父类中找。
二、继承的专业术语
父类\超类 superclass
子类 subclass\subclasses
三、继承的优点与缺点
1.优点
不改变原来模型的基础上,拓充方法
建立了类与类之间的联系
抽取了公共代码
2.缺点
耦合性强
四、继承的使用场合
它的所有属性都是你想要的,一般就继承
它的部分属性是你想要的,可以抽取出另一个父类
五、super关键字
super的作用:
直接调用父类中的某个方法
super处在对象方法中,那么就会调用父类的对象方法
super处在类方法中,那么就会调用父类的类方法。
六、父类方法的重写:
当子类对父类的某一方法的功能需求不满意时,可以对该方法的功能重新定义,这种方式就是重写。重写时不得改变该方法在父类中的声明,方法名不变,只需在当前类中改变方法的功能。重写方法后,当程序在调用该方法时直接调用子类的方法,不再调用父类中对应的该方法。
多态
一、多态的基本概念
某一类事物的多种形态
OC对象具有多态性
二、形式
Person*p = [Student new];
p->age= 10;
[pwalk];
子类对象赋值给父类指针
父类指针访问对应的属性和方法
三、多态的好处
用父类接收参数,节省代码
四、多态的局限性
不能访问子类的属性(可以考虑强制转换)
体会:继承和多态,使得对象的应用更加灵活,也让各类各对象形成一种系统。
- 黑马程序员——OC语言------继承、多态
- 黑马程序员 -- OC语言 封装 继承 多态
- 黑马程序员——OC语言——继承
- 【黑马程序员】【OC语言】继承
- 黑马程序员-OC语言-继承
- 黑马程序员——OC语言基础:面向对象三大特性,封装、继承、多态
- 黑马程序员——oc之继承
- 黑马程序员——OC基础---继承
- 黑马程序员-OC语言之继承
- 黑马程序员——OC语言学习——OC面向对象的三大特性:封装、继承、多态,OC字符串——NSString
- 黑马程序员——OC语言基础——面向对象三大特性之继承
- 黑马程序员——OC语言初学
- 黑马程序员——OC语言ARC
- 黑马程序员——OC语言Block
- 黑马程序员——OC语言ARC
- 黑马程序员——OC语言基础知识
- 黑马程序员——OC语言------Foundation
- 黑马程序员-OC-继承
- 源码编译安装 MySQL 5.5.x
- MATLAB读写文件汇总
- keeper
- Spring控制器注解
- oc中把NSString转换为变量
- 黑马程序员——OC语言------继承、多态
- 11582 - Colossal Fibonacci Numbers!
- 深入浅出Redis(三)高级特性:管道
- 蓝桥杯 买不到的数目(数学,不懂)
- HTTP与HTTPS的区别
- Java的Overriding重写-笔记
- Properties的使用
- 自助去除APK的广告!(整理、修改、简化版)
- mysql 字符集(CHARACTER SET)和校对集(COLLATE)