新建一个Person类:
Person.h文件:
#import <Foundation/Foundation.h>
// .h 接口文件
// @interface 后面 类名:(继承自)父类 NSObject
@interface Person : NSObject
// 中间写 声明 或者 实例变量(特征)行为的声明
{
// 添加一个OC关键字进行修饰 表明实例变量的可见度
@public
// public关键字 代表公开的意思
// 声明的实例变量(特征)要写一个大括号
// 只要是特征 名字要加下划线
NSString *_name; // 姓名
NSString *_sex; // 性别
NSInteger _age; // 年龄
}
// 行为(方法)
// void sayHi(); // C语言声明函数
- (void)sayHi;
// 重写初始化方法 重写的是父类的方法
// 重写的话 一定要跟父类的方法 名字一样 返回值一样 参数一样 只有方法的实现是不一样的
// instancetype 表示返回一个对象类型
// void * 无类型指针 可以转化任何类型的指针
// id 表示一个对象类型(可以声明一个对象使用)
// 自定义初始化方法
- (instancetype)initWithName:(NSString *)name
sex:(NSString *)sex
age:(NSInteger)age;
// 接口文件的结束部分
@end
Person.m文件:
#import "Person.h"
@implementation Person
// 一般重写的初始化方法写在最上面
//- (instancetype)init{
// // 需要一个返回值
// // self关键字 在本类中 表示本类对象
//
// return self;
//}
- (instancetype)initWithName:(NSString *)name
sex:(NSString *)sex
age:(NSInteger)age
{
// 对实例变量(特征)进行赋值
_name = name;
_sex = sex;
_age = age;
return self;
}
// 中间写 行为(方法)的实现部分
- (void)sayHi{
NSLog(@"%@ %@ %ld", _name, _sex, _age);
}
@end
main.m文件:
#import <Foundation/Foundation.h>
#import "Person.h"
int main(int argc, const char * argv[]) {
// OC的输出方法
// 比printf多一个换行
NSLog(@"这是OC的第一个工程");
// @符 是OC关键字的标志
// OC常用数据类型
// NSInteger 整型
// CGFloat 浮点型
// 定义一个字符串
// 如果有 * 就代表这是一个对象
NSString *string = @"今天吃药了么?";
// 输出字符串
// 格式化输出 占位符 只要你是对象 都可以用 %@ 来占位
NSLog(@"%@", string);
// 基本数据类型 用什么来当占位符
NSInteger number = 4;
NSLog(@"%ld",number);
CGFloat score = 10.5;
NSLog(@"%.2f", score);
#pragma mark -- 用类实例出一个对象(创建一个对象)
// 创建对象 分两个过程
// 1.分配内存空间(堆区开辟空间 需要管理的)
// 2.对对象进行初始化
// 创建一个人的对象
// 根据使用方式来命名的方法
// 减号方法(实例方法\对象方法) 使用对象来调用
// 加号方法(类方法) 使用类名来调用
// 如何调用方法?
// OC中调用方法 使用中括号来调用
Person *person = [[Person alloc]init];
// new这个方法就相当于 开辟空间并初始化
// Person *p = [Person new];
// 调用sayHi方法
[person sayHi];
// 给实例变量赋值(给对象赋值)
person->_name = @"dj";
person->_sex = @"女";
person->_age = 23;
NSLog(@"name = %@ sex = %@ age = %ld", person->_name, person->_sex, person->_age);
// 利用自定义初始化方法 创建一个对象
Person *p1 = [[Person alloc]initWithName:@"笪君" sex:@"女" age:22];
[p1 sayHi];
Person *p2 = [[Person alloc]initWithName:@"马婷婷" sex:@"女" age:26];
[p2 sayHi];
Person *p3 = [[Person alloc]initWithName:@"胡志炎" sex:@"男" age:22];
[p3 sayHi];
Car *car = [[Car alloc]initWithBrand:@"audiR8" Color:@"白" Price:@"1000000"];
[car sayHi];
return 0;
}