8.类和对象的关系

课程来自慕课网Visitor.zc老师


创建类的对象
#import <Foundation/Foundation.h>
#import "People.h"

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        // 实例化对象
        /*
         类名 对象名 = [[类名 方法名] 方法名];
         alloc - 为对象分配内存空间
         init  - 进行初始化操作
         */
        People *p1 = [[People alloc] init];
        People *p2 = [[People alloc] init];
        People *p3 = [People new];
        
        NSLog(@"p1 - %p",p1);  // p1 - 0x10181deb0
        NSLog(@"p2 - %p",p2);  // p2 - 0x10181e440
        NSLog(@"p3 - %p",p3);  // p3 - 0x10181dcc0
        return 0;
    }
}
属性和成员变量
  • main.m
#import <Foundation/Foundation.h>
#import "People.h"

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        // 实例化对象
        /*
         类名 对象名 = [[类名 方法名] 方法名];
         alloc - 为对象分配内存空间
         init  - 进行初始化操作
         */
        People *p1 = [[People alloc] init];
        People *p2 = [[People alloc] init];
        
        p1.name = @"张三";
        p2.name = @"李四";
        
        NSLog(@"p1.name -> %@",p1.name);  // p1.name -> 张三
        NSLog(@"p2.name -> %@",p2.name);  // p2.name -> 李四
        return 0;
    }
}
  • People.h
#import <Foundation/Foundation.h>

NS_ASSUME_NONNULL_BEGIN
// 类外使用属性,类内使用成员变量
@interface People : NSObject

// 属性为了让类外可以访问成员变量
// 属性就是成员变量的外部接口
@property(nonatomic,strong)NSString *name;
@end

NS_ASSUME_NONNULL_END
  • People.m
#import "People.h"

@implementation People
{
    //声明成员变量
    // NSString *_name;  申明name属性时,系统会自动生成 _name 成员变量
    int _age;
    int _sex;
}
- (instancetype)init
{
    self = [super init];
    if (self) {
        // 类内调用成员变量,属性是给类外使用的
        _name = @"张三";
    }
    return self;
}
@end
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容