在Xcode中添加文件,选择Cocoa Class 或者Cocoa Touch Class.
输入类名Person,并选择父类为NSObject.
Person.h
//
// Person.h
// OC1_类和对象
//
// Created by dllo on 15/8/28.
// Copyright (c) 2015年 lanou3g. All rights reserved.
//
#import <Foundation/Foundation.h>
// @ 开头的都是OC的系统关键字.
// 类和对象是面向对象的核心.
// 解决问题的套路: 定义类 -> 创建对象 -> 使用对象.
// 类是具有相同特征和行为的事物的抽象.
// 描述类: 特征 & 行为.
// 类的构成: 接口部分(interface) & 实现部分(implementation)
// 接口/声明.
@interface Person : NSObject
关键字 类名 父类名
{
// 成员变量列表(特征)
@public // 成员变量的可见度 修饰符 公开/公有
// OC中字符串类型NSString *
NSString *_name;
NSString *_sex;
// NSInteger 整形
NSInteger _age;
// CGFloat 浮点型
CGFloat _height;
}
// 方法(行为)类似于函数
- (void)sayHi;
- (void)printPerson;
@end
Person.m
//
// Person.m
// OC1_类和对象
//
// Created by dllo on 15/8/28.
// Copyright (c) 2015年 lanou3g. All rights reserved.
//
#import "Person.h"
// 实现.
// 实现在接口中声明好的方法.
@implementation Person
// 减号后面有空格.
- (void)sayHi
{
// OC输出函数
NSLog(@“哈哈!~“);
// 方法中调用成员变量
_name = @“嘿嘿”;
NSLog(@“name : %@“, _name);
}
// 初始化方法 初始化对象中的成员变量.
// instancetype/id 泛型指针 任意的对象
- (instancetype)init {
_name = @“鱼班长”;
_sex = @“男”;
_age = 20;
_height = 1.80;
return self; // 返回对象自己
}
- (void)printPerson {
NSLog(@“name : %@", _name);
NSLog(@“sex : %@“, _sex);
NSLog(@“age : %@“,_age);
NSLog(@“height : %.2f”, _height);
}
新建一个Cup类.
Cup.h
//
// cup.h
// OC1_类和对象
//
// Created by dllo on 15/8/28.
// Copyright (c) 2015年 lanou3g. All rights reserved.
//
#import <Foundation/Foundation.h>
// 创建类的时候,系统会创建一对和类名一致的文件,来存放类的接口和实现.
// 文件和类没有直接关系 文件名和类名可以不一致.
// 一个文件中可以创建多个类.
@interface ShuiBei : NSObject
{
@public
NSString *_brand;
NSString *_color;
CGFloat _size;
CGFloat _price;
}
// 行为/方法
- (void)zhuangshui;
@end
@interface test :NSObject
{
@public
NSString *_name;
}
- (void)testTwo;
cup.m
//
// cup.m
// OC1_类和对象
//
// Created by dllo on 15/8/28.
// Copyright (c) 2015年 lanou3g. All rights reserved.
//
#import "cup.h"
@implementation ShuiBei
- (void)zhuangshui {
NSLog(@“一桶!~”);
}
@end
@implementation test
- (void)testTwo {
NSLog(@“哈哈”);
}
main.n
//
// main.m
// OC1_类和对象
//
// Created by dllo on 15/8/28.
// Copyright (c) 2015年 lanou3g. All rights reserved.
//
#import <Foundation/Foundation.h>
#import "Person.h"
#import "cup.h"
int main(int argc, const char * argv[]) {
#if 0
// 定义类 -> 创建对象 -> 使用对象.
// 创建对象的步骤:1.开辟空间 2.初始化.
// OC使用方法的结构:[调用方法的人 方法].
// 由Person 类调用alloc方法 申请开辟一段堆内存空间 清空然后返回空间首地址.
// OC中用对象代指指针.
Person *per = [Person alloc];
// per对象调用初始化方法,赋值结束后,将变化后的对象赋值回去.
per = [per init];
// 一般写法.
Person *newPer = [Person alloc] init];
// 使用对象.
[newPer sayHi];
// 打印对象 %@
NSLog(@“%@,%@“, per, newPer);
#endif
#if 1
// 在方法中调用成员变量
Person *per = [Person alloc] init];
// 调用方法 在方法中调用了成员变量.
[per sayHi];
[per printPerson];
Person *newPer = [Person alloc] init];
[newPer printPerson];
// 对象 ->成员变量 访问和修改成员变量
per -> _sex = @“女”;
[per printPerson];
NSLog(@“height:%2.f”, per -> _height);
ShuiBei *p = [[ShuiBei alloc] init];
[p zhuangshui];
#endif
return 0;
}