初始类和对象
main.m
#import <Foundation/Foundation.h>
// 使用一个类, 先引入头文件
#import "Person.h"
#import "Car.h"
#import "TellPhone.h"
int main(int argc, const char * argv[]) {
// 对象的使用
// 1.分配内存空间
// oc中方法的调用
// [执行方法的目标, 执行的方法];
// alloc方法 开辟内存空间, 将内存里面的所有值都归0, 即将所有的成员变量的默认值都置0或者NULL;
// 用一个Person类型的指针指向分配的内存首地址
Person *p = [Person alloc];
// 2.对 对象 初始化
p = [p init];
// 通常, 创建对象的两步连写
Person *per = [[Person alloc] init];
// +alloc 是一个加号方法, 也叫类方法, 只能由类去调用
// -init 是一个减号方法, 叫实例方法, 只能由对象取调用
// 这两个方法的类型 都是id类型的, 这是一个通用的对象类型, 可以指向任何对象
// 利用对象, 调用对象自己的方法
[per sayHi];
[per play];
[per eat];
[per listenMusic];
// 练习
Car *car = [[Car alloc] init];
[car start];
TellPhone *phone = [[TellPhone alloc] init];
[phone call];
// 对成员变量进行操作
// 当成员变量被@public可见度修饰的时候, 可以使用->访问
// 给成员变量赋值
per->name = @"lisi";
per->age = 21;
per->number = 200;
[per sayHi];
// 获取成员变量的值
NSLog(@"年龄: %d", per->age);
return 0;
}
Person.h
#import <Foundation/Foundation.h>
// .h文件中负责对类的声明
// @interface 代表一个类的开始
// @interface 类名 : 父类(继承谁)
@interface Person : NSObject
// 所有的oc代码都要写在@end之前, @interface之后
// 定义类的特征
{
// 定义成员变量的可见度. @public 公开的
@public
// 特征的列表 成员变量
int age; // 年龄
NSString *name; // 名字
int number; // 微信号
}
// 方法列表 类的行为列表
// 无返回值, 无参数的方法
// 减号 (返回值类型)方法名;
- (void)eat;
- (void)drink;
- (void)play;
- (void)listenMusic;
- (void)sayHi;
// @end 结束声明
@end
Person.m
#import "Person.h"
// .m 类的实现
@implementation Person
// 实现的所有代码写在 @implementation 和 @end 之间
- (void)eat
{
NSLog(@"啥都吃!!!");
}
- (void)play
{
NSLog(@"啥都玩");
}
- (void)listenMusic
{
NSLog(@"听歌");
}
- (void)drink
{
NSLog(@"喝");
}
-(void)sayHi
{
// 只要 .h 中声明的方法, .m 中必须实现
// 成员变量 在类内部是公开的, 全局的
NSLog(@"大家好, 我芳龄%d岁, 闺名%@", age, name);
}
// 这个方法是一个系统的方法, 由系统声明, 我们只需要实现就可以, 初始化
- (id)init
{
age = 20;
number = 100;
name = @"zhangsan";
// self 代表自己, 当前这个类的一个对象
return self;
}
@end