Objective-C语言_面向对象(继承)
来源:互联网 发布:山东工商学院网络课 编辑:程序博客网 时间:2024/06/05 19:34
main.m
#import <Foundation/Foundation.h>#import "Father.h"#import "NotSon.h"#import "Son.h"#import "SonA.h"#import "SonB.h"int main(int argc,const char * argv[]) { @autoreleasepool{ #pragma mark -----------继承------------------- /* 继承:继承是避免冗余,提高代码的可重用和可维护性的有效手段 (书P54) 继承的传递性:直接父类、间接父类 继承需要符合的关系: is-a 子类和父类都需要满足 is-a的关系,才存在继承关系。 继承概念下的 is-a关系是个单向的关系 子类具有父类的属性和行为,以及自身特殊的属性和行为 要记住 X is-a Y隐喻着X可以做出任何Y可以做出的事情,而且还有可能会做出更多的事情 */ /* 继承的特点 1.使用继承可以实现代码的重用,减少代码冗余 2.OC中一个类可以继承另一个类,被继承的类称为父类 或者超类(基类),继承的类称为子类 或者派生类(孩子类) 3.子类可以直接"拥有"父类所有允许子类继承的属性和方法 4.子类可以改变父类中已有的方法,执行不同的代码实现 5.OC中只允许单一继承,因为多重继承会有称为"致命方块"的问题(P57) */ Father *father = [[Fatheralloc]init]; //点语法的本质是setter和 getter father.name = @"Jack"; [father sayHello]; [father charge]; //如果这样写代码就会十分的冗余了,并且这样写没有遵循面向对象的一个重要原则:write once,only once NotSon *notSon = [[NotSonalloc]init]; notSon.name = @"notSon"; [notSon sayHello]; [notSon charge]; Son *son = [[Sonalloc]init]; [son charge]; son.name = @"Rick"; son.homeAddress = @"GZ"; [son sayHello]; [son race]; #pragma mark -------------NSObject中常用的方法及其功能---------- /* NSObject中常用的方法及其功能 1.方法: +(id)alloc 功能:返回一个分配好内存的对象 说明:已经分配号内存的对象的实例变量会被初始化成默认值 2.方法: +(init) 功能:对已经分配内存大的实例变量初始化(相当于便利初始化函数) 不一定要默认的便利初始化函数,也可以自己写 说明:常见形式 -(id)init { if(self = [super init]) { //初始化 } return self ; } 3.方法:+(id)new 功能:同时调用了 alloc和 init 4.方法: -(Class)class +(Class)class 功能:返回当前对象所属类 5.方法:-(Class)superclass +(Class)superclass 功能:返回当前对象的父类 6.方法: -(BOOL)isKindOfClass:(Class)aClass 功能:判定receiver是否为Class的实例 说明:判断某个实例是否属于某个类或者子类 7.方法:-(BOOL)isMemberOfClass:(Class)aClass 功能:判断receiver是否为Class的实例 说明:只能判断某个实例是否属于某个类,不能判断是否属于某个父类 8.+(BOOL)isSubclassOfClass:(Class)aClass 功能:判断是否为aClass的子类 说明:判断是否某个类的子类 9.-(BOOL)respondsToSelector:(SEL)aSelector 功能:判断receiver是否响应某个消息,不包括类方法 10.+(BOOL)InstancesRespondToSelector:(SEL)aSelector 功能:判断类的对象是否响应某消息 11.-(BOOL)conformsToProtocol:(Protocol *)aProtocol 功能:判断是否实现某协议 12.-(id)retain 功能:对象引用计数+1 13.-(oneway void)release 功能:对象引用计数 -1 14.-(id)autorelease 功能:对象引用计数-1,且向autoreleasepool发送消息 15.-(NSUInteger)retainCount 功能:返回当前引用计数 16.-(void)perfromSelector:(SEL)aSelector withObject:(id)anArgument afterDelay:(NSTiemInvterval)delay; 功能:隔指定时间之后进行方法调用 */ } return 0;}
Father.h
#import <Foundation/Foundation.h>@interface Father : NSObject@property (nonatomic,strong)NSString *name;@property (nonatomic,assign)NSInteger age ;@property (nonatomic,strong)NSString *hobby ;-(void)sayHello ;-(void)charge ;@end
Father.m
<pre name="code" class="objc">#import "Father.h"@implementation Father-(void)sayHello{ NSLog(@"Hello everybody,my name is %@",self.name);}-(void)charge{ NSLog(@"随便刷,刷刷刷!!!");}@end
NotSon.h
#import <Foundation/Foundation.h>@interface NotSon : NSObject@property (nonatomic,strong)NSString *name;@property (nonatomic,assign)NSInteger age ;@property (nonatomic,strong)NSString *hobby ;-(void)sayHello ;-(void)charge ;@end
NotSon.m
#import "NotSon.h"@implementation NotSon-(void)sayHello{ NSLog(@"Hello everybody,my name is %@",self.name);}-(void)charge{ NSLog(@"随便刷,刷刷刷!!!");}@end
SonA.h
#import "Father.h"@interface SonA : Father@end
SonA.m
#import "SonA.h"@implementation SonA-(void)sayHello{ [super sayHello]; NSLog(@"I am SonA");}@end
SonB.h
#import "Father.h"@interface SonB : Father@end
SonB.m
@implementation SonB-(void)sayHello{ [super sayHello]; NSLog(@"I am SonB");}@end
Son.h
#import "Father.h"//@interface 类名:父类名 ,在OC中,使用冒号表示一个类继承了另一个类。冒号的含义是扩展,意味着子类除了继承了父类的属性和方法外,还可以扩展出自己的特殊属性和方法(一般情况下,我们继承于NSObject类,可以获取NSObject类中的大量有用的特性)@interface Son : Father@property (nonatomic,strong)NSString *homeAddress ;//自己的方法-(void)race ;@end
Son.m
#import "Son.h"@implementation Son//重写父类的charge方法-(void)charge{ /* 重写继承中的方法 特点: 1.发生在父类和子类之间 2.方法名相同,参数列表相同,返回类型相同 */ NSLog(@"拿老爸的卡出来刷一下);}@end
0 0
- Objective-c语言_面向对象(继承)
- Objective-C语言_面向对象(继承)
- Objective-c语言_面向对象(封装)
- Objective-c语言_面向对象(多态)
- Objective-C语言_面向对象(封装)
- objective-C语言_面向对象(多态)
- Objective-c语言_面向对象(多态)2
- Objective-C语言:面向对象
- C 语言面向对象-- 继承
- 面向对象语言Objective-C三大特性之二--继承
- Objective-C 面向对象的编程语言
- Objective-c语言_面向对象(便利初始化函数,构造器和多态的结合)
- 面向对象_继承
- 面向对象_继承
- objective-c(八)-面向对象之继承
- Objective C面向对象
- objective-c面向对象
- Objective-C 面向对象
- iptables
- Python下MySQL数据库操作
- 指针部分疑点解释
- Kafka 说过的话
- Unity的四种坐标系
- Objective-C语言_面向对象(继承)
- 安卓数据库编程之Sqlite
- DevExpress .NET界面示例集锦
- 黑马程序员——第九篇:Integer、Character、正则表达式、大数据运算、日期类
- present和push混用,再跳转回来的问题
- iOS copy, mutableCopy, strong
- for循环对象
- 谷歌电子市场学习笔记第二天之上
- Telnet命令访问Redis缓存