OC-011.OC中的继承
来源:互联网 发布:淘宝客户资源管理分析 编辑:程序博客网 时间:2024/05/19 14:37
OC中的继承机制是单继承的,一个子类只能有一个父类
OC支持多层继承的,A 继承 NSObject,B继承A这就称为多层继承
1、首先在本类中找
2、如果没有,去父类中找
3、如果父类中没有,就去父类的父类中
4、如果父类的父类也没有,就还往上找,直到找到基类(NSObject)
OC支持多层继承的,A 继承 NSObject,B继承A这就称为多层继承
只有继承NSObject那么这个对象才有创建对象能力
NSObject是大部分类的基类(根类 root class)
当 A 类 继承 B类,那么A类就拥有B类中所有成员变量和方法(成员方法和类方法)
1、继承好处:代码重用
2、继承缺点:父类的改变影响所有的子类,子类与父类的耦合度很高
A类 继承 B类目的就是为了使用B类中的成员变量和方法(成员方法和类方法)
使用场景:
当我们发现一个类是另外一个类的时候就可以使用继承,例如学生是一个人,那么这个时候定义学生类的时候,就可以让学生继承人类
3、当子类中不想使用父类的方法,那么把父类的方法覆盖掉(成员方法和类方法)
1、首先在本类中找
2、如果没有,去父类中找
3、如果父类中没有,就去父类的父类中
4、如果父类的父类也没有,就还往上找,直到找到基类(NSObject)
5、如果NSObject都没有就报错了
#import <Foundation/Foundation.h>//------main#import "LSStudent.h"int main(int argc, const char * argv[]) { @autoreleasepool { LSPerson *per = [[LSPerson alloc] init]; [per setAge:60]; [per setName:@"龙爸爸"]; LSStudent *stu = [[LSStudent alloc] init]; [stu setAge:10]; [stu setName:@"龙叔叔"]; [stu show]; //打印age=10,name=龙叔叔 } return 0;}
#import <Cocoa/Cocoa.h>//------LSperson.h@interface LSPerson : NSObject{ int _age;//年龄 NSString *_name;//姓名}- (void) setAge:(int) age;- (void) setName:(NSString *) name;- (void) say;//say方法- (void) show;//show方法@end
#import "LSPerson.h"//------LSPerson.m@implementation LSPerson- (void) setAge:(int) age{ _age = age;}- (void) setName:(NSString *) name{ _name = name;}- (void) say{ NSLog(@"我是一个人");}- (void) show{ NSLog(@"age = %d,name = %@",_age,_name);}@end
#import "LSPerson.h"//------LSStudent.h@interface LSStudent : LSPerson//- (void) show;@end
#import "LSStudent.h"//------LSStudent.m@implementation LSStudent//当子类中不想使用父类的方法,那么把父类的方法覆盖掉- (void) say{ NSLog(@"我是一个学生");}//- (void) show{// NSLog(@"age = %d,name = %@",_age,_name); //子类拥有父类的所有成员变量和方法//}@end
0 0
- OC-011.OC中的继承
- OC语言中的继承
- OC中的继承
- oc中的继承
- OC中的OOP之 --- 继承
- OC中的继承与复合
- OC 继承
- OC-继承
- OC继承
- OC 继承
- OC 继承
- oc 继承
- OC 继承
- OC:继承
- oc继承
- OC 继承
- OC 继承
- OC-012.OC中的继承的多态特性
- URL传递中文参数,Windows正常在后台获取参数,但Linux获取的参数是乱码 的解决方法。
- Java抓取网页数据(原网页+Javascript返回数据)
- Android 资源文件的命名规范问题
- SpringMvc框架Java文件流下载。
- Linux编译动态链接库和使用
- OC-011.OC中的继承
- MapleSim在模型方程的妙用
- C++之数据库处理代理模块
- sed学习备忘录
- expdp/impdp逻辑数据迁移杂谈
- linux - 用户登陆自加载脚本
- org.apache.xerces.jaxp.DocumentBuilderFactoryImpl cannot be cast to javax.xml.parsers.DocumentBuilde
- jquery插件编写
- open vpn