黑马程序员——OC基础---基础小结(类方法,匿名对象,封装)
来源:互联网 发布:airplay mac与iphone 编辑:程序博客网 时间:2024/05/16 10:24
——Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ——-
一、类方法
1.加号开头。
2.类方法只能用类名调用。
3.类方法中不能访问成员变量。
4.类方法可以调用类方法。
5.允许类方法和对象方法同名。
类方法的好处和使用场合
1.不依赖于对象,执行效率高。
2.能用类方法就用类方法。
3.当方法内部不需要使用到成员变量时,就可以改用类方法。
示例:
#import <Foundation/Foundation.h>@interface Car : NSObject{ }+(void)run;@end@implementation Car+(void)run{ NSLog(@"车在跑");}@endint main(int argc, const char * argv[]) { @autoreleasepool { // insert code here... [Car run]; } return 0;}
运行结果:
二、匿名对象
1.没有名次的对象叫匿名对象。
2.有名称的对象,用一个指针来接受了对象的地址叫有名称对象。
匿名对象的使用场景:1.当对象方法仅仅调用一次的时候。2.匿名对象可以作为实际参数传递。
示例:
#import <Foundation/Foundation.h>@interface Car : NSObject{ int _speed;}-(void)setSpeed:(int)speed;-(void) run;@end@implementation Car-(void)setSpeed:(int)speed{ _speed = speed;}-(void)run{ NSLog(@"车在跑,速度%d",_speed);}@endint main(int argc, const char * argv[]) { @autoreleasepool { // insert code here... [[Car new]setSpeed:110]; //匿名类访问成员变量只能访问一次 [[Car new]run]; } return 0;}
输出结果:
三、封装
封装是对属性的封装。
规范写法:
set方法
1.一定是对象方法
2.返回值一定是void
3.一定以set开头,后面接上成员变量去掉下划线的名称,首字母大写
4.一定有参数,参数类型一定和成员变量相同。
get方法
1.一定是对象方法
2.一定有返回值,返回值和成员变量类型相同
3.方法名称直接写成员变量名称去掉下划线
4.一定没有参数
封装的原则:将不需要对外提供的内容都隐藏起来,把属性都隐藏,提供公共的方法对其访问。
优点:可以过滤掉一些不符合逻辑的数据,提高代码的健壮性。
示例:
Person.h文件
#import <Foundation/Foundation.h>typedef enum{ kSexMan,kSexWomen}Sex;@interface Person : NSObject{ //姓名 NSString *_name; //年龄 int _age; //性别 Sex _sex; //身高 float _height;}-(void) setName:(NSString *)name;-(NSString *)name;-(void) setAge:(int)age;-(int) age;-(void) setSex:(Sex)sex;-(Sex) sex;-(void) setHeight:(float)height;-(float) height;@end
Person.m文件
#import "Person.h"@implementation Person-(void)setName:(NSString *)name{ _name = name;}-(NSString *)name{ return _name;}-(void)setAge:(int)age{ _age = age;}-(int)age{ return _age;}-(void)setSex:(Sex)sex{ _sex = sex;}-(Sex)sex{ return _sex;}-(void)setHeight:(float)height{ _height = height;}-(float)height{ return _height;}@end
main()文件
#import <Foundation/Foundation.h>#import "Person.h"int main(int argc, const char * argv[]) { @autoreleasepool { // insert code here... Person *p = [[Person alloc]init]; [p setName:@"king"]; [p setAge:23]; [p setSex:kSexMan]; NSLog(@"%@,%d,%d",[p name],[p age],[p sex]); } return 0;}
输出结果:
四、组合模式
在一个类中声明其它对象的指针变量。
优点:全局的对象方法都可以访问,简化了我们的代码。
缺点:依赖性很强。
使用场景:当多个方法都使用到了同一个对象,就把它设置为成员变量。
示例:
IPhone.h
#import <Foundation/Foundation.h>@interface IPhone : NSObject{ NSString *_phoneNum;}-(void) setPhoneNum:(NSString *)phoneNum;-(NSString *) phoneNum;//打电话-(void) callPhone;@end
IPhone.m
#import "IPhone.h"@implementation IPhone-(void)setPhoneNum:(NSString *)phoneNum{ _phoneNum = phoneNum;}-(NSString *)phoneNum{ return _phoneNum;}-(void)callPhone{ NSLog(@"给人打电话,电话号码是%@",_phoneNum);}@end
People.h
#import <Foundation/Foundation.h>#import "IPhone.h"@interface People : NSObject-(void)callPhonePeople:(IPhone *) iphone;@end
People.m
#import "People.h"@implementation People-(void)callPhonePeople:(IPhone *)iphone{ [iphone setPhoneNum:@"110"]; [iphone callPhone];}@end
main.m
#import <Foundation/Foundation.h>#import "People.h"int main(int argc, const char * argv[]) { @autoreleasepool { // insert code here... IPhone *ip = [[IPhone alloc]init]; People *p = [[People alloc]init]; //people依赖iphone [p callPhonePeople:ip]; } return 0;}
运行结果:
——Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ——-
- 黑马程序员——OC基础---基础小结(类方法,匿名对象,封装)
- 黑马程序员-oc基础类方法 封装
- 黑马程序员—OC基础--对象的属性封装
- 黑马程序员——OC基础语法----类、对象、方法
- 黑马程序员—OC基础--扩展(匿名类别)
- 黑马程序员—OC语言基础—方法小结
- 黑马程序员——java小结_006_类、对象(匿名对象)、封装
- 黑马程序员——OC语言基础---对象和方法
- 黑马程序员——Java基础——面向对象、匿名对象、封装
- 黑马程序员---iOS基础---OC中类方法和封装
- 黑马程序员——OC基础:类和对象
- 黑马程序员—OC语言基础—类与对象
- 黑马程序员——OC基础:类和对象
- 黑马程序员——OC语言基础---类和对象
- 黑马程序员——OC语言基础——面向对象三大特性之封装
- 黑马程序员——OC语言基础:面向对象三大特性,封装、继承、多态
- 黑马程序员——OC基础---类方法的总结
- 黑马程序员—OC语言基础—核心语法小结
- V模型
- Android 仿微信侧滑关闭页面效果
- Android Studio系列教程六--Gradle多渠道打包
- 小小君的OC第四课
- 零基础ios开发(六 多态,删除指定图片 )
- 黑马程序员——OC基础---基础小结(类方法,匿名对象,封装)
- 关于textfield的一些细节
- win7/8系统下VS工程无法访问网络驱动器中的文件
- 欢迎使用CSDN-markdown编辑器
- Volley的使用
- NOIP2005过河
- 简单的javascript时钟
- Cocoapods简易使用指南(以方便导入POP动效库)
- 在equals中使用getClass进行类型判断