//
// 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;
}