ios第一课 关于类的声明和实现
2015-12-08 22:48
393 查看
总结:
1:
+ 代表方法为
类方法;
- 代表方法为
实例方法;
2:
//在同一个类内方法不能重载,即方法的签名不能完全一样;但是类方法和实例方法签名可以相同
//方法的签名
和 参数类型、参数名称无关
//方法签名和方法的返回值类型无关;
3:
//实例方法可以直接引用类的实例变量和其他实例方法
//类的方法都是public的,没有protected
和 private方法
,但是如果一个方法 只是出现在类的方法里面,没有出现在类的声明里,name这个方法可以认为是私有的!
ASstudent类的声明
#import <Foundation/Foundation.h>
@interface ASStudent : NSObject
{
NSString* name;//ios当中 对象都是在堆上分配的,所以都是指针
@public
unsigned int age;
@private
NSString* sid;//
}
+(void)print; // + 代表方法为 类方法; void为返回值类型, print为签名
-(void)setName:(NSString*)aName;// - 代表方法为 实例方法; void为返回值类型,setName: 为 签名 :也属于签名部分; NSString* 为形参类型, aName为形参
-(NSString*)name;
//-(void)name; //error 实例方法签名不能相同 这个和上面都是 name
-(void)name:(int)aname;// 签名部分为 name: 包含冒号部分 所以不算相同
+(void)name; //true 类方法和 实例方法 签名可以相同 方法签名不能一样,不支持重载
//在同一个类内方法不能重载,即方法的签名不能完全一样;但是类方法和实例方法签名可以相同
//方法的签名 和 参数类型、参数名称无关
//方法签名和方法的返回值类型无关;
@end
实现:
#import "ASStudent.h"
@implementation ASStudent
-(NSString*)name{
return name;
}
-(void)setName:(NSString *)aName{
name = aName;
}
+(void)print{
NSLog(@"类方法");
}
//实例方法可以直接引用类的实例变量和其他实例方法
//类的方法都是public的,没有protected 和 private方法 ,但是如果一个方法 只是出现在类的方法里面,没有出现在类的声明里,name这个方法可以认为是私有的!
@end
发现: 可以声明 但是不实现,不会报错,但是C++当中会报错;
主函数调用:
#import <Foundation/Foundation.h>
#import "ASStudent.h"
int main(int argc, const char * argv[]) {
@autoreleasepool {
// insert code here...
ASStudent* student = [[ASStudent alloc]init]; //对象的创建
student->age = 10;
[student setName:@"dujianbao"]; //实例方法 调用
NSLog(@"%@",[student name]);
[ASStudent print]; //类方法的 调用
}
return 0;
}
1:
+ 代表方法为
类方法;
- 代表方法为
实例方法;
2:
//在同一个类内方法不能重载,即方法的签名不能完全一样;但是类方法和实例方法签名可以相同
//方法的签名
和 参数类型、参数名称无关
//方法签名和方法的返回值类型无关;
3:
//实例方法可以直接引用类的实例变量和其他实例方法
//类的方法都是public的,没有protected
和 private方法
,但是如果一个方法 只是出现在类的方法里面,没有出现在类的声明里,name这个方法可以认为是私有的!
ASstudent类的声明
#import <Foundation/Foundation.h>
@interface ASStudent : NSObject
{
NSString* name;//ios当中 对象都是在堆上分配的,所以都是指针
@public
unsigned int age;
@private
NSString* sid;//
}
+(void)print; // + 代表方法为 类方法; void为返回值类型, print为签名
-(void)setName:(NSString*)aName;// - 代表方法为 实例方法; void为返回值类型,setName: 为 签名 :也属于签名部分; NSString* 为形参类型, aName为形参
-(NSString*)name;
//-(void)name; //error 实例方法签名不能相同 这个和上面都是 name
-(void)name:(int)aname;// 签名部分为 name: 包含冒号部分 所以不算相同
+(void)name; //true 类方法和 实例方法 签名可以相同 方法签名不能一样,不支持重载
//在同一个类内方法不能重载,即方法的签名不能完全一样;但是类方法和实例方法签名可以相同
//方法的签名 和 参数类型、参数名称无关
//方法签名和方法的返回值类型无关;
@end
实现:
#import "ASStudent.h"
@implementation ASStudent
-(NSString*)name{
return name;
}
-(void)setName:(NSString *)aName{
name = aName;
}
+(void)print{
NSLog(@"类方法");
}
//实例方法可以直接引用类的实例变量和其他实例方法
//类的方法都是public的,没有protected 和 private方法 ,但是如果一个方法 只是出现在类的方法里面,没有出现在类的声明里,name这个方法可以认为是私有的!
@end
发现: 可以声明 但是不实现,不会报错,但是C++当中会报错;
主函数调用:
#import <Foundation/Foundation.h>
#import "ASStudent.h"
int main(int argc, const char * argv[]) {
@autoreleasepool {
// insert code here...
ASStudent* student = [[ASStudent alloc]init]; //对象的创建
student->age = 10;
[student setName:@"dujianbao"]; //实例方法 调用
NSLog(@"%@",[student name]);
[ASStudent print]; //类方法的 调用
}
return 0;
}
相关文章推荐
- iOS - 断言处理与调试
- iOS开发 多线程 NSThread的使用
- iOS中Facebook开源动画库POP的简单使用
- ios 页面之间的传值:属性传值,代理传值,block传值
- 字典
- 数组
- IOS 通过麦克风检测声音分贝
- iOS通信加密
- iOS闭包blocks
- iOS 简单使用Block回调
- iOS笔试题04
- iOS笔试题03
- iOS笔试题02
- iOS笔试题01
- iOS中如何用锁
- IOS开源库和第三方组件
- 【iOS官方文档翻译】iOS的蓝牙连接、数据接收及发送
- iOS和tvOS游戏按需加载资源简介
- iOS开发-清理缓存功能的实现
- 侧滑手势ios 关于interactivePopGestureRecognizer