Object-C技术学习,更多资源请访问 https://www.itkc8.com
// main.m
// OC面向对象
//
// Created by Goddog on 15/1/2.
// Copyright (c) 2015年 Goddog. All rights reserved.
//
/*
1.self关键字总是指向调用该对象的方法。
2.self最大的作用是让类中的一个方法访问该类的另一个方法或成员变量。
*/
#import <Foundation/Foundation.h>
#import "MyClass.h" //导入类的接口部分即可
int main(int argc, const char * argv[]) {
@autoreleasepool {
/*
self总是代表当前类的对象,当self出现在某个方法体中,它代表的对象是不确定的,但是它的类型是确定的
它所代表的对象只能是当前类的实例,当这个方法被调用时,它所代表的对象才被确定下来,谁在调用该方法,
self就是谁。但是self不能出现在类方法中,应为类方法的调用者是类的本身。
*/
//创建MyClass方法
MyClass* class = [[MyClass alloc] init];
//调用对象的sayEnglish方法
[class sayEnglish];
//-------------------------------
/*
当局部变量和成员变量重名的时候,局部变量会隐藏成员变量,为了在方法中抢行引用成员变量,可以用self区分。
*/
MyClass* mc = [[MyClass alloc] init];
[mc setName:@"HUXU" andAge:25];
[mc info];
//-------------------------------
/*
当self作为对象的默认引用使用时,程序可以像访问普通指针变量一样访问这个self引用,
甚至可以把self当成普通方法的返回值
*/
//连续调用同一方法
MyClass* mc1 = [[MyClass alloc] init];
[[[mc1 grow] grow] grow];
NSLog(@"该成员变量值时:%d",mc1->_time);//_time初始化为0,连续调用3次累计为3。
}
return 0;
}
//
// MyClass.h
// OC面向对象
//
// Created by Goddog on 15/1/2.
// Copyright (c) 2015年 Goddog. All rights reserved.
//
#import <Foundation/Foundation.h>
@interface MyClass : NSObject
//成员变量
{
NSString* _name;
int _age;
@public
int _time;
}
//定义一个say方法
-(void) say;
//定义一个sayEnglish方法
-(void) sayEnglish;
//定义一个setName:andAge:方法
-(void) setName: (NSString*) _name andAge: (int) _age;
//定义一个info方法
-(void) info;
//定义一个方法
-(MyClass*) grow;
@end
//
// MyClass.m
// OC面向对象
//
// Created by Goddog on 15/1/2.
// Copyright (c) 2015年 Goddog. All rights reserved.
//
#import "MyClass.h"
@implementation MyClass
//实现say方法
-(void) say
{
NSLog(@"说");
}
//实现sayEnglish方法
-(void) sayEnglish
{
//这样也可以调用say方法
// MyClass* myClass = [[MyClass alloc] init];
// [myClass say];
[self say]; //谁在调用这个方法,self就是谁
NSLog(@"这样也可以执行sayEnglish方法");
}
//实现setName:andAge:方法
-(void) setName:(NSString *)_name andAge:(int)_age
{
//当局部变量隐藏成员变量时候,可以用self代表调用该方法,这样就可以调用该方法的成员变量赋值
self->_age=_age;
self->_name=_name;
}
//实现info方法
-(void) info{
NSLog(@"我的姓名%@,芳龄%d",_name,_age);
}
//实现返回self的方法
-(MyClass*) grow
{
_time++;
return self;
}
@end
Object-C技术学习,更多资源请访问 https://www.itkc8.com