OC学习日记08-对象与对象之间的关系( 继承、 复合 、依赖)
来源:互联网 发布:乾坤大挪移 知乎 编辑:程序博客网 时间:2024/05/17 23:24
对象与对象之间的关系
继承 复合
什么是复合:
1个类是由其他几个类组合而成的,他们之间的关系就叫复合。
复合与继承之间的区别:
1.满足继承的关系:is a
当A类是一个B类,A类可以从B类继承
2.满足复合的关系:has a
A类有一个B类,A和B就复合关系
依赖
依赖:
1个对象的方法的参数是另一个对象,那么他们的关系就是依赖关系。
main.m文件:
Person *per = [Person new]; Phone *iPhone=[Phone new]; [per callWithPhone:iPhone]; Person1 *per1=[Person1 new]; Book *book=[Book new]; per1.name=@"小明"; book.name=@"<三国演义>"; [per1 read:book]; [book showMasterName:per1]; NSLog(@"%@",book);
各个类文件:
#import <Foundation/Foundation.h>#import "Book.h"@interface Person1 : NSObject@property(nonatomic,strong)NSString *name;@property(nonatomic,strong)Book *book;-(void)read:(Book *)book;@end#import "Person1.h"@implementation Person1-(void)read:(Book *)book{ NSLog(@"我在读书%@",book.name);}@end
#import <Foundation/Foundation.h>@class Person1;@interface Book : NSObject@property(nonatomic,strong) NSString *name;//书名@property(nonatomic,strong) NSString *authorName;//作者名-(void)showMasterName:(Person1 *)person;@end
#import "Book.h"#import "Person1.h"@implementation Book-(void)showMasterName:(Person1 *)person{ NSLog(@"我的主人是%@",person.name);}-(NSString *)description{ return@"我是一本书";}@end
#import <Foundation/Foundation.h>#import "Phone.h"@interface Person : NSObject@property(nonatomic ,strong) NSString *name;@property(nonatomic ,strong) Phone *phone;//价格-(void)callWithPhone:(Phone *)phone;@end#import "Person.h"@implementation Person-(void)callWithPhone:(Phone *)phone{ [phone callWithNumber:@"100"];}@end
#import <Foundation/Foundation.h>@interface Phone : NSObject@property(nonatomic ,strong) NSString *name;@property(nonatomic ,assign) NSInteger price;//价格-(void)callWithNumber:(NSString *)number;@end#import "Phone.h"@implementation Phone-(void)callWithNumber:(NSString *)number{ NSLog(@"正在呼叫%@",number);}@end
#import <Cocoa/Cocoa.h>#import "CPU.h"#import "Memory.h"#import "MainBoard.h"@interface Computer : NSObject@property(nonatomic ,strong)CPU *cpu;@property(nonatomic ,strong)MainBoard *mb;@property(nonatomic ,strong)Memory *men;-(void)playGame;@end#import "Computer.h"@implementation Computer@end
#import <Foundation/Foundation.h>@interface Memory : NSObject@property(nonatomic ,strong) NSString *brand;//品牌@property(nonatomic ,strong) NSString *model;//型号@end#import "Memory.h"@implementation Memory@end
#import <Foundation/Foundation.h>@interface MainBoard : NSObject@property(nonatomic ,strong) NSString *brand;//品牌@property(nonatomic ,strong) NSString *model;//型号@end#import "MainBoard.h"@implementation MainBoard@end
#import <Foundation/Foundation.h>@interface CPU : NSObject@property(nonatomic ,strong) NSString *brand;//品牌@property(nonatomic ,strong) NSString *model;//型号-(void)jisuan;@end#import "CPU.h"@implementation CPU-(void)jisuan{ NSLog(@"我在计算...");}@end
当两个类互相包含,就会出现循环引用问题,导致出错
#import和@class的区别
#import:是讲指定的文件全部拷贝
@class:不会拷贝任何内容 ,只是告诉编译器存在这么一个类可以使用
如何解决:
其中一个类不要使用#import来引入头文件,而是使用@class来标注这是一个咧,并在.m文件重新引入头文件。
0 0
- OC学习日记08-对象与对象之间的关系( 继承、 复合 、依赖)
- 微软企业库4.1学习笔记(二)各功能之间的依赖关系以及对象创建
- jQuery对象之间的继承关系
- OC 类方法 对象方法 对象成员之间的关系
- OC基础-对象和对象之间的关系09
- 对象与对象之间的关系
- OC-005.对象与函数的关系
- Springs 依赖注入,组装对象之间的依赖关系(2)
- java学习日记_36:面向对象之继承中构造方法的关系
- 深入理解OC的继承与复合
- 黑马程序员-oc对象和方法之间的关系
- 对象关系【继承】【依赖】【关联】【聚合】【组合】
- OC面向对象的三大特征(封装 继承 多态)习题2 复合
- 对象与方法之间的关系
- 创建对象与括号之间的关系
- 对象之间的关系
- 对象之间的关系
- 对象之间的关系
- Tomcat报错Error listenerStart
- Cornerstone客户端遇到的问题:Unable to connect to a repository at URL
- python “No module named multiarray ”的解决方法
- MyEclipse 2015 Stable 2.0安装包及破解工具下载
- Matlab_learning_3(变量检查 who / whos 命令)
- OC学习日记08-对象与对象之间的关系( 继承、 复合 、依赖)
- Java中的死锁问题
- 数组元素全排列(递归版本)
- 初学C#,一个从数据库中读取信息并分页问题
- 设计模式总结之Chain Of Responsibility Parttert(职责链模式)
- ruby rails server启动
- Eclipse中如何clean项目以及clean的作用
- xshell4的使用经验
- zzuli 1905 Problem A: 小火山的跳子游戏(规律)