OC语言的基本特点:
(1)OC语言是C语言的一个超集,只是在C的基础之上加上了面对对象(oo)的特性;
(2)OC与Java语言相同都是单继承,这一点与C++语言不同(多重继承);
(3)OC不支持命名空间机制,取而代之的是在类名之前添加前缀,以此来区分。
创建一个Person工程
main.m
#import <Foundation/Foundation.h>
#import "Person.h"
int main(int argc, const char * argv[])
{
/*____________________创建person对象______________________*/
//在OC里面对象使用指针声明的
//alloc在内存中申请一块内存,用来存储此对象的信息
// Person *person = [Person alloc];
//调用init方法初始化一些默认的数据
// person = [person init];
//以上两步就创建好了一个对象
//等价与下面的这句
Person *person = [[Person alloc] init];
//new创建对象,不推荐
// Person *person1 = [Person new];
/*________________________OC方法的调用__________________________*/
// [对象/类 方法名];
//类方法的调用
[Person testClass];
//实例方法的调用
//不带参数的方法的调用
[person shopping];
//带一个参数的方法的调用
[person shopping:3000];
//带两个参数的方法的调用
[person shopping:400 withPlace:@"大物美"];
NSInteger a = [person shoppingPrice];
NSLog(@"a:%ld",a);
return 0;
}
Person.h
#import <Foundation/Foundation.h>
//:后面的就是当前类的父类,NSObject是一切类的根类
@interface Person : NSObject {
//在{}之间定义属性
//属性、全局变量、实例变量、成员变量
NSInteger age; //年龄
NSString *name; //名字
BOOL sex; //性别
//注意:在OC里面不能在定义属性的时候对属性赋值
// float height = 1.70; //身高
}
/*--------------------设置类的方法---------------------*/
//C语言定义函数
//函数返回值类型 函数名 (形参列表);
//int getSum(int a, int b);
//OC中方法的定义
//方法的类型 (方法的返回值类型)方法名 参数
/*--------------------设置类的方法(实例方法)---------------------*/
//实例方法
//方法名: shopping
- (void)shopping; //购物的方法,不带参数
//方法名: shopping:(注意:“:”是方法名的一部分)
- (void)shopping:(float)price; //带一个参数的
//方法名: shopping: withPlace:
- (void)shopping:(float)price withPlace:(NSString *)place; //带两个参数
//返回类型为整型
- (NSInteger)shoppingPrice;
/*--------------------设置类的方法(累方法)---------------------*/
+ (void)testClass;
@end
#import "Person.h"
@implementation Person
//不带参数的方法
- (void)shopping {
//在实例方法类里面可以用档期类的属性
// NSLog(@"%@",name);
NSLog(@"购物了");
}
//带一个参数的方法
- (void)shopping:(float)price {
NSLog(@"购物消费了%f元",price);
}
//带两个参数的方法
- (void)shopping:(float)price withPlace:(NSString *)place {
NSLog(@"在%@购物消费了%f元",place,price);
}
- (NSInteger)shoppingPrice {
NSInteger price = 100;
return price;
}
//类方法
+ (void)testClass {
//在类方法中无法访问属性
// NSLog(@"%@",name);
NSLog(@"这是一个类方法");
}
@end