类的创建与简单实现

//
//  main.m
//  OC2_类的创建
//
//  Created by weisuzhong on 2017/7/5.
//  Copyright © 2017年 weisuzhong. All rights reserved.
//

#import <Foundation/Foundation.h>

//Student类
//@interface 是定义一个类的关键字
//@end 表示类定义结束
//Student 类型
//NSObject 根类
//NS:Next Step表示公司的前缀
@interface Student : NSObject
{
    //实例变量的定义,通常以_开头
    //实例变量必须包含在大括号内,有点像C语言的结构体
    NSString *_name;//NSString 是OC系统提供的字符串类
    NSInteger _age;//NSInteger <==> long
}

//构造方法
//id 类似于C语言中的void *
//- 说明该方式是一个对象方法(实例方法)
//返回值是范型的对象
//方法名:init
//无传入参数
- (id)init;

//set方法:修改实例变量的值
- (void)setName:(NSString *)name;
- (void)setAge:(NSInteger)age;

//有两个传入参数,一个是name,一个age
//无返回值
//方法名是 setName:andAge:
- (void)setName:(NSString *)name andAge:(NSInteger)age;
//也可以写成如下的形式(匿名方法),但不提倡
//- (void)setName:(NSString *)name :(NSInteger)age;

//get方法:读取实例变量的值
- (NSString *)name;
- (NSInteger)age;

//类方法
+ (void)testStudent;

@end

//@implementation 实现类的关键字
//@end 类实现结束

@implementation Student
- (id)init //初始化对象的方法
{
    //super 是调用父类方法的关键字
    self = [super init];//self 表示调用者,指向调用者的对象指针变量
    if(self){
        _name = @"小华";
        _age = 12;
    }
    return self;
}

//set方法访问修改实例变量的值
- (void)setName:(NSString *)name
{
    _name = name;
}

- (void)setAge:(NSInteger)age
{
    _age = age;
}

- (void)setName:(NSString *)name andAge:(NSInteger)age
{
    _name = name;
    _age = age;
}

//get方法访问读取实例变量的值
//返回字符串对象
- (NSString *)name
{
    return _name;
}

- (NSInteger)age
{
    return _age;
}

//+ 开头的方法为类方法,给类调用的方法,通常用类名调用
//测试当前类是否可用
+ (void)testStudent
{
    Student *stu = [[Student alloc] init];
    [stu setName:@"Jack" andAge:25];
    NSLog(@"name = %@, age = %li",[stu name],[stu age]);//NSLog 打印OC中的字符串对象
}

@end


int main(int argc, const char * argv[]) {
    @autoreleasepool {
        //Student类通过alloc方法在堆内存中创建一个对象,返回值为指针,再通过init方法进行初始化
        Student *stu = [[Student alloc] init];

        //
        NSLog(@"name = %@, age = %li",[stu name],[stu age]);
        [stu setName:@"小明" andAge:20]; //@“小明” 表示字符串对象,如果把@去掉就表示C语言的字符串而不是对象
        NSLog(@"name = %@, age = %li",[stu name],[stu age]);//%@ 打印对象的占位符,%li 打印long类型的占位符

        //调用类方法
        [Student testStudent];
    }
    return 0;
}

注意

  • self是指针
  • 在对象方法中,self表示调用者
  • 在类方法中,self表示当前类本身
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值