20150609类和对象(下)

本文介绍了一个使用Objective-C编写的简单人员类(Person),包括属性、初始化方法、getter和setter方法以及类方法的实现。通过具体示例展示了如何创建对象并调用其方法。

//

//  Person.h

//  IOS150609_ObjectiveC_ClassAndObjctive_1

//

//  Created by Peng Junlong on 15/6/9.

//  Copyright (c) 2015 Peng Junlong. All rights reserved.

//


#import <Foundation/Foundation.h>


@interface Person : NSObject

{

    NSString *_name;

    NSInteger _age;     //NSInteger <-->long

}


//初始化方法

- (id)initWithName:(NSString *)name andAge:(NSInteger)age;


//getter方法

- (NSString *)name;

- (NSInteger)age;


//setter方法

- (void)setName:(NSString *)name;

- (void)setAge:(NSInteger)age;

- (void)setName:(NSString *)name andAge:(NSInteger)age;


//类方法

+ (void)testPerson;

@end


//*************************************************


//

//  Person.m

//  IOS150609_ObjectiveC_ClassAndObjctive_1

//

//  Created by Peng Junlong on 15/6/9.

//  Copyright (c) 2015 Peng Junlong. All rights reserved.

//


#import "Person.h"


@implementation Person


//初始化方法

- (id)initWithName:(NSString *)name andAge:(NSInteger)age

{

    self = [super init];

    if (self) {         //只有父类的方法成功初始化后才能初始化自定义的实例变量,否则不进行初始化自定义的实例变量

        _name = name;

        _age = age;

//        self->_age = age;

//        self->_name = name;

    }

    

    return self;

}


- (void)setName:(NSString *)name

{

    _name = name;

}


- (void)setAge:(NSInteger)age

{

    _age = age;

}


- (void)setName:(NSString *)name andAge:(NSInteger)age

{

    _age = age;

    _name = name;

}


- (NSString *)name

{

    return _name;

}


- (NSInteger)age

{

    return _age;

}


+ (void)testPerson

{

    id zhangSan = [[self alloc] initWithName:@"张三" andAge:34];       //self指针在类方法里面代表调用该类方法的类,谁调用这个方法self就代表谁;id后没有*

    NSLog(@"zhangSan = %p\n",&zhangSan);      //  栈内存,保存对象指针的地址

    NSLog(@"zhangSan = %p\n",zhangSan);       //  堆内存,即申请到对象的内存块的首地址

    NSLog(@"name = %@, age = %ld\n",[zhangSan name],[zhangSan age]);

    

    Person *person = [Person alloc];                //  alloc方法申请出来的内存块叫做对象,person是对象指针,指向申请出来的内存块的首地址

    person = [person initWithName:@"李四" andAge:24];

    //person是对象指针变量         对象指针指向的内存块叫做对象

    //* 表示对象的引用

    //%@:打印一个对象,  NSLog打印字符串对象,自动换行

    NSLog(@"person = %p",&person);      //  栈内存

    NSLog(@"person = %p",person);       //  堆内存

    NSLog(@"name = %@, age = %ld",[person name],[person age]);

    [person setName:@"王五" andAge:26];

    NSLog(@"name = %@, age = %ld",[person name],[person age]);

    

}

@end


//*********************************************************************

//

//  main.m

//  IOS150609_ObjectiveC_ClassAndObjctive_1

//

//  Created by Peng Junlong on 15/6/9.

//  Copyright (c) 2015 Peng Junlong. All rights reserved.

//


#import <Foundation/Foundation.h>

#import "Person.h"

int main(int argc, const char * argv[]) {

    @autoreleasepool {

       

        [Person testPerson];

        

    }

    return 0;

}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值