黑马程序员——OC基础---继承
来源:互联网 发布:淘宝拍a发b不降权 编辑:程序博客网 时间:2024/04/28 13:07
------- <a href="http://www.itheima.com" target="blank">android培训</a>、<a href="http://www.itheima.com" target="blank">java培训</a>、期待与您交流! ----------
继承OC中非常重要的内容之一,继承在现实生活中指获取父母的一切资源,在OC指子类获得父类的资源(实例变量和方法)
继承的好处是使代码的可重用性 提高,同时还建立了一种类和类的联系。
继承后子类A可以有父类B的方法和属性,如果父类B同时也是其他类C的子类,那么子类A也有C类的方法和属性,付过C类仍然有父类,那么子类A仍可继承到该类的属性和方法,一直继承到基类NSObject.
即 子类的方法和属性=子类自己独有的方法和属性+父类的方法和属性+爷爷类的方法和属性+...+基类的方法和属性
父类Animal的代码
<pre name="code" class="objc">#import <Foundation/Foundation.h>@interface Animal : NSObject{ @private NSString *haHaWoBuHuiBeiJiCheng;}@property(nonatomic,assign)int age;-(void)eat:(NSString*)foodName;-(void)run;@end
子类Dog
#import <Foundation/Foundation.h>#import "Animal.h"@interface Dog : Animal//以前这个位置是写基类NSObject,也就是继承NSObject类,现在我们继承自Animal,除了需要在中写继承类的名以外,还需引入父类的.h头文件//子类自己的方法和属性@end
如同父辈的财产未必会完全给子女一样,父类也并不是所有资源都会给子类。
父类的成员属性如果为
private:私有成员,可以被子类看见,不能被子类继承。
protected:保护成员,可以被子类继承。
public:公有成员,可以被子类继承。
父类的私有方法(只在.m文件实现,未在.h文件声明)也不能被子类继承
另:从子类往父类方向找,是一条单线,即一个类只能有一个父类,如果从父类往子类方向找,则可以有多条线,即一个类可以有多个子类,并且每个子类相互独立,可以有自己独有的属性和方法(类似于现实中我们只能有一个父亲,但我们却可以有很多子女)。
子类中不可以有和父类同名的属性,但可以有和父类同名的方法。
子类方法与父类方法同名即是方法的重写,子类重写父类的方法并不需要单独声明,只需要在.m文件中实现即可
重写之后,父类调用方法的时候调用的是自己的方法,子类调用重写方法的时候调用的是自己重写的方法,如果还想使用父类的方法,可以用super来调用父类的方法(重写 init方法的时候比用)。
Animal.m
#import "Animal.h"@implementation Animal-(void)eat{ NSLog(@"动物----->吃"); }-(void)bark{ [self wocao]; NSLog(@"动物----->叫");}//私有方法,不会被子类继承-(void)wocao{ NSLog(@"哈哈哈 HOHOhaheii");}@end
Dog.m
#import "Dog.h"@implementation Dog//重写父类的eat和bark方法-(void)eat{ NSLog(@"狗----->吃"); }-(void)bark{ NSLog(@"狗----->叫");}@end
类寻找方法,会先从自己找起,然后再找父类,爷爷类...基类直至报错
例如Dog的对象调用方法会先从自己的方法中找起,然后再到Animal类中找,最后到NSObject中找,这也是为什么一旦重写后,子类并不会调用父类的方法。
- 黑马程序员——OC基础---继承
- 黑马程序员——oc之继承
- 黑马程序员——OC语言基础——面向对象三大特性之继承
- 黑马程序员——OC基础02—封装、继承、多态
- 黑马程序员——OC语言基础:面向对象三大特性,封装、继承、多态
- 黑马程序员—IOS基础之OC—类的三大特性封装、继承、多态
- 黑马程序员——OC基础
- 黑马程序员——OC基础语法
- 黑马程序员——oc基础1
- 黑马程序员——OC基础语法
- 黑马程序员——oc基础语法
- 黑马程序员——OC基础---协议
- 黑马程序员—OC基础--枚举数据类型
- 黑马程序员—OC基础--初探“多态”
- 黑马程序员—OC基础--初探 “KVO”
- 黑马程序员—OC基础--初探 “KVC”
- 黑马程序员-OC-继承
- 黑马程序员--OC继承
- LBP(local binary pattern)
- 赎罪……
- netstat命令
- 制作网页3---XAMPP的配置(环境是Linux Ubuntu)
- eclipse下工程导成jar包运行报错,解决方法
- 黑马程序员——OC基础---继承
- 剑指offer—字符流中第一个不重复的字符
- sqlite学习
- MAC安装并破解PhpStorm-9.0.2 记录(附下载链接)
- 响应式布局
- Java中的集合类型的迭代器(Iterator)
- 【July程序员编程艺术】之字符串左旋
- Leetcode86: Missing Number
- [Poj1004]Financial Management