您的位置:首页 > 移动开发 > IOS开发

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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: