OC01_类和对象

本文详细介绍了如何在Xcode中使用Objective-C和CocoaTouchClass创建类,包括类的定义、对象的创建和使用,通过实例展示了如何创建Person类和Cup类,并演示了类中成员变量的访问与修改。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在Xcode中添加文件,选择Cocoa Class 或者Cocoa Touch Class.

选择类文件

输入类名Person,并选择父类为NSObject.

新建一个Person类
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;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值