//先上.m
// Created by 大L君 on 16/1/19.
// Copyright © 2016年 bigL.com. All rights reserved.
#import <Foundation/Foundation.h>
//
@interface Person : NSObject//类的声明
{
@public //对象属性的声明
NSString *_name;
int _age;
double _weight;
}
-(void)shout;//对象方法声明
+(void)sumValue1:(int)numX withSumValue2: (int)numY;//类方法声明
@end
@implementation Person//方法的实现
-(void)shout //输出所有对象的值
{
NSLog(@"name = %@;age = %d; weight = %.2lf",_name,_age,_weight);
}
+(void)sumValue1:(int)numX withSumValue2: (int)numY//求2个数的和
{
NSLog(@"sum = %i",numX+numY);
}
@end
void test();//函数声明(函数声明与调用类声明之间不分先后 PS:(函数与调用结构体分先后))
int main(int argc, const char * argv[]) {
@autoreleasepool {
test();
}
return 0;
}
void test()
{
Person *p = [Person new];//通过类创建对象
p -> _name = @"蛤";//修改对象的属性
p -> _age = 18;
p -> _weight = 157.54;
[p shout];//对象方法只能用对象调用
[Person sumValue1:10 withSumValue2:20];//类方法只能用类调用
}
/*===================================================
2016-01-19 15:14:52.765 1.2 类的定义[5147:415020] name = 蛤;age = 18; weight = 157.54
2016-01-19 15:14:52.766 1.2 类的定义[5147:415020] sum = 30
==================================================*/
一.类的基本格式
@interface 类名 : 父类名称//NSObject是OC中的基类
{
@public //公用对象
NSString _a;//成员对象的声明
int _b;
id _c;
}
//对象方法的声明
//类方法的声明
@end
@implementation 类名
//对象方法
-(方法类型)对象方法名:(参数类型)参数名1 方法签名:(参数类型)参数名2
{
code;
}
//类方法
+(方法类型)类方法名:(参数类型)参数名1 方法签名:(参数类型)参数名2
{
code;
}
@end
二.对象方法和类方法与函数区别
//类方法与对象方法 : 互相4种调用均问题;
对象方法与类方法的区别
函数与方法区别
对象方法:
• (1)对象方法的实现只能写在@implementation…@end中,对象方法的声明只能写在 @interface…@end中间
• (2)对象方法都以-号开头,类方法都以+号开头
• (3)对象方法只能由对象来调用,类方法只能由类来调用,不能当做函数一样调用
•(4)函数属于整个文件,可以写在文件中的任何位置,包括@implementation…@end中,但写在 @interface…@end会无法识别,函数的声明可以在main函数内部也可以在main函数外部。
• (5)对象方法归类\对象所有
•
• 函数:
• (1)所有的函数都是平行的
• (2)函数不存在隶属关系
• (3)使用的时候可以直接调用
• (4)不可以访问对象中的成员变量
•
三. 常见错误
• 1)@interface @end和@implementation @end不能嵌套包含
• 2) OC是弱语法,可以只有@implementation,但实际开发中千万不要这样。
• 4)漏写@end
• 5)两个类的对象声明顺序(可以把顺序打乱)
• 6)成员变量没有写在{}里
• 7)方法的声明写在了{}里面
• 8)在声明时不能对类的成员变量进行初始化,请注意成员变量不能脱离对象而独立存在
• 9)方法无法像函数那样的调用
• 10)成员变量和方法不能用static等关键字修饰,不要和c语言混淆
• 11)类的实现可以写在mian函数后面,在使用之前只要有声明就可以