Person.h
#import <Foundation/Foundation.h>
//Person 类的名字,冒号是继承,NSObject是父类;
//类的声明部分,也叫类的接口;以interface 开始,以end 结束
@interface Person : NSObject {
@public //实例变量是公开的,不管在什么地方都能访问
// 实例变量,也叫类的特征,写在大括号里面
NSString *_name; //姓名
NSString *_sex; //性别
int _age; //年龄 age是实例变量,不是对象
NSString *_number;//身份证号
}
//声明方法的地方 大括号{}之后,结束符前面;方法就是类的行为
-(void) eat; //减号“-”是方法的标识
@end
Person.m
#import "Person.h"
//类的实现部分:以implementation开头,以end结束
@implementation Person
//实现声明文件中声明eat的方法
-(void) eat{
NSLog(@"%d随便打点",_age);
}
//子类重写父类的初始化方法
-(id) init {
_name = @"zhangsan";
return self; //self表示是自己这个对象
}
@end
Audi.h
#import <Foundation/Foundation.h>
@interface Audi : NSObject{
NSString *_brand;
NSString *_color;
int _price;
}
//声明汽车跑的方法
-(void)run;
@end
//手机类的声明
@interface Phone : NSObject{
@public //公有的
NSString *_brand; //品牌
NSString *_color; //颜色
NSString *_system; //系统
float _price; //价格
}
//打电话
-(void)callSomeOne;
//玩游戏
-(void)playGames;
//更新系统
-(void)updateSystem;
@end
Audi.m
#import "Audi.h"
@implementation Audi
//实现跑的方法
-(void)run{
NSLog(@"%@",_color);
}
@end
@implementation Phone
//打电话
-(void)callSomeOne{
NSLog(@"跟女友打电话");
}
//玩游戏
-(void)playGames{
NSLog(@"玩LOL");
}
//更新系统
-(void)updateSystem{
NSLog(@"更新系统到8.3");
}
@end
main.m
#import <Foundation/Foundation.h>
#import "Person.h"
#import "Audi.h"
int main(int argc, const char * argv[]) {
// 用Person类实例化一个对象
// alloc方法的作用是 在堆区开辟空间,并把首地址返回
// []作用是调用方法
// + 类方法,只能由类的名字来调用 ;alloc是+方法
// alloc和init方法返回的类型都是id,id也是一种类型,表示泛型的意思,可以表示所有的对象类型,在oc中除了基本数据类型都是对象类型
Person *person = [Person alloc];
person = [person init];
// 这种初始化方式等价于上面两行代码
Person *p = [[Person alloc] init];
p -> _name = @"lisi";
NSLog(@"p.name = %@", p ->_name);
p -> _age = 23;
NSLog(@"p.age = %d", p ->_age);
[p eat];
// 调用person类中的eat方法
[person eat];
// 创建audi类的实例
Audi *audi = [[Audi alloc] init];
// 调用方法
[audi run];
Phone *phone = [[Phone alloc] init];
[phone playGames];
return 0;
}