main.m
#import <Foundation/Foundation.h>
#import "Person.h"
#import "Student.h"
#import "Teacher.h"
#import "NewStudent.h"
int main(int argc, const charchar * argv[]) {
@autoreleasepool {
/*
OC中的方法
设置器与访问器
便利初始化函数 以及 便利构造器
属性
*/
//OC中的方法
//实例方法
// Person *personA = [Person new];
// Person *personA = [[Person alloc]init];
Person *personA = [Person alloc];
personA = [personA init]; //实例方法
//如何调用使用实例方法?
[personA sayHello];
[personA sayHelloName:@"Rick" andAge:25];
//如何调用类方法?
[Person sayHi];
[Person hiGuys];
}
return 0;
Person.h
#import <Foundation/Foundation.h>
@interface Person : NSObject
{
NSString *_name ;
NSInteger _age;
NSString *_hobby;
}
/*
OC中的方法
方法: 是类的功能代码,在(.h)文件中声明,在(.m)文件中实现。
语法:
-|+ (返回类型) 方法名:参数列表
{
//方法体
}
减号(-)表示实例方法,加号(+)表示类方法
*/
-(void)sayHello; //实例方法
-(void)sayHelloName:(NSString *)name
andAge:(NSInteger)age ; //实例方法
//类方法
/*
注意:
1.类方法可以调用类方法
2.类方法不可以调用实例方法,但是类方法可以通过创建实例对象来访问实例方法
3.类方法不可以使用实例变量。类方法可以使用self,因为self不是实例变量
4.类方法作为消息,可以被发送到类里面去,不能发送到对象里面去
*/
+(void)sayHi ;
+(void)hiGuys ;
@end
Person.m
#import "Person.h"
@implementation Person
-(void)sayHello
{
NSLog(@"sayHello!");
}
-(void)sayHelloName:(NSString *)name andAge:(NSInteger)age
{
NSLog(@"Hello guys!My name is %@,I am %ld years old!",_name,_age);
}
//类方法
+(void)sayHi
{
NSLog(@"sayHi!");
}
/*
注意:
1.类方法可以调用类方法
2.类方法不可以调用实例方法,但是类方法可以通过创建实例对象来访问实例方法
3.类方法不可以使用实例变量。类方法可以使用self,因为self不是实例变量
4.类方法作为消息,可以被发送到类里面去,不能发送到对象里面去
*/
+(void)hiGuys
{
//1.类方法可以调用类方法,通过self调用
//self 是什么? self 代表当前对象的指针
[self sayHi];
//2.类方法不可以调用实例方法,但是类方法可以通过创建实例对象来访问实例方法
// [self sayHello];
Person *p = [[Person alloc]init];
[p sayHello];
//3.类方法不可以使用实例变量。类方法可以使用self,因为self 不是实例变量
// NSLog(@"hi,My name is %@,age is %ld,hobby is %@",_name,_age,_hobby);
}
@end