// 创建对象(OC中几乎所有的对象都存在堆区) ,NSString一些创建方式是存在常量区。
// 发送消息(函数的调用):[消息接受者方法名];
// 如果为 - 方法,消息接受者为对象,
// 如果为 + 方法,消息接受者为类名。
一、
#import<Foundation/Foundation.h>
#import"Phone.h"
#import "Car.h"
#import"Person.h"
intmain(intargc, const char * argv[]) {
@autoreleasepool {
// 这种方法几乎不用
// 第一步: 分配内存空间
// Car *car = [Car alloc];
// // 第二步初始化
// car = [car init] //常用的创建对象方法
//返回值是对象的首地址,即对象。
//p是跟对象同类型的指针变量,存储对象首地址,代指对象。
// [Car alloc]返回一个car对象,再用car对象调用init。
Car *car = [[Car alloc] init];
// 如果实例变量用@public修饰,那么访问实例变量用:对象名->实例变量名
// NSLog自带换行,打印出时间,项目名,线程编号。
NSLog(@"%@,%@,%d",car->_color,car->_brand,car->_price);
// 发送消息(即函数的调用)
[car introduce];
[car drive];
Person *person = [[Person alloc] init];
[person introduce];
Phone *iphone = [[Phone alloc] init];
[iphoneshow_brand:@"apple"show_size:4];
NSLog(@"这是%@的%d手机",iphone->_brand,iphone->_size);
//为实例变量赋值
person->_name= @"ysss";
person->_gender= @"w";
person->_age= 29;
//为实例变量取值
int age =person->_age;
NSString *name =person->_name;
}
return 0;
}
二、
// Car.h
#import<Foundation/Foundation.h>
//当前类名:父类名
//代码规范:类名首字母大写,实例变量要以下划线开头
@interface Car :NSObject
// 实例变量(特征)全部写在大括号里面
{
// 只要不是C语言的int,float,char等基本类型,变量面前全部加* 号。
@public
// 作为区分,实例变量要下划线开头。
NSString*_color;
NSString*_brand;
int _price;
}
// (方法)行为的声明
- (void)drive;
-(void)introduce;
//.m 文件又叫做实现文件
#import"Car.h"
//类名和文件名可以不一致,但是一致有利于查找。
@implementationCar
// 重写init方法
// instancetype为不确定类型。
// self 谁调用这个方法,谁就是self
-(instancetype)init{
_color = @"blue";
_price = 100;
_brand =@"拖拉机";
return self;
}
- (void)drive{
// 只要不是C语言的基本类型全部用%@打印
NSLog(@"%@",_brand);
}
-(void)introduce{
NSLog(@"%@%@ %d",_brand,_color,_price);
}
@end