------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------
本博文是博主刚入oc时的一些疑惑的总结,博主喜欢一边敲代码,一边查询不懂的知识点,然后备注,以备日后查看,所以大部分会以代码形式呈现。整理到此,希望给各位初学看客提供一些方便!
Person类
Person.h
//.h:类的实例变量和方法声明
#import <Foundation/Foundation.h>
//@interface:类声明的关键字
//Person:类名
//NSObject:Person的父类
//NSObject:所有oc类的直接或间接的父类(宙斯<img alt="生气" src="http://static.blog.csdn.net/xheditor/xheditor_emot/default/mad.gif" />)
//冒号--->继承
//Person : NSObject:Person继承自NSObject
@interface Person : NSObject{
//实例变量的声明(属性)
/*
*实例变量的访问控制属性
@public:公共的
1:类中的方法可以直接访问,类外通过对象可以直接访问
2:子类中的方法可以直接访问,子类外的对象可以直接访问
@private:私有
1:类中的方法可以访问,类外通过对象不能直接访问
2:子类中的方法不可以直接访问,子类外的对象不可以直接访问
@protected:保护(默认)
1:类中的方法可以访问,类外通过对象不能直接访问
2:子类中的方法可以直接访问,子类外的对象不可以直接访问
总结:访问范围@private<@protected<@public
*/
int _age;//实例变量全部已下划线开头_
NSString *_name;
}
//类中方法的声明
//oc中方法没有访问控制属性,默认全部都是共有的
/*
*类中方法的种类
* - :对象方法,该方法是通过对象来调用,对象方法中可以直接访问实例变量
* + :类方法,该方法是通过类名来调用,类方法中不能够直接访问实例变量
*/
//不带参数的方法
//- :表示该方法是对象方法
//(void):函数的返回值
//总结:oc类中的方法,所有出现数据类型的地方都用小括号 (数据类型)
//方法名: run
- (void)run;
//带一个参数的方法
//- :表示该方法是对象方法
//(void):函数的返回值
//(NSString *)foodName:函数行参,(NSString *)是数据类型,foodName是行参名
//方法名: eat: (冒号也是方法名的一部分)
- (void)eat: (NSString *)foodName;
//多个参数的方法
//- :表示该方法是对象方法
//(void):函数的返回值
//(int)age (NSString *)name:函数参数,一个是整形一个是字符串
//方法名:descAge: andName:
//总结:冒号, 函数名的一部分:(数据类型)参数名,冒号的个数和函数行参的个数相同
- (void)descAge:(int)age andName:(NSString *)name;
@end
Person.m
//.m:类中方法的实现
#import "Person.h"
//@implementation:类方法实现的关键字
@implementation Person
//方法实现
- (void)run{
NSLog(@"runing............");
}
- (void)eat:(NSString *)foodName{
NSLog(@"eat food %@...........", foodName);//%@输出字符串
}
- (void)descAge:(int)age andName:(NSString *)name{
NSLog(@"age is %d name is %@", age, name);
}
@end
main:
#import <Foundation/Foundation.h>
#import "Student.h"//包含该类的头文件
int main(int argc, const char * argv[])
{
@autoreleasepool {
#if 0
//oc中所有的对象都是指针
//oc中方法的调用: [对象名/类名 方法名:实参]
//注意:alloc是类方法,init是对象方法,在student类中能够使用这两个方法的原因是继承NSObject类
Student *std = [Student alloc];//alloc:在对堆上创建一个对象, alloc会返回在堆上开辟的空间首地址
std = [std init];//init:对象初始化
#endif
#if 0
Student *std = [Student new];//等价于alloc和init
#endif
Student *std = [[Student alloc] init];//最常用的,创建了一个student类的对象
NSLog(@"age is %d name is %@", [std age], [std name]);
//通过对象调用setter方法
[std setAge:18];
[std setName:@"super man"];
NSLog(@"age is %d name is %@", [std age], [std name]);//通过对象调用getter方法
}
return 0;
}
附oc关键字:
@interface、@implementation、@end
@public、@protected、@private、@selector
@try、@catch、@throw、@finally
@protocol、@optional、@required、@class
@property、@synthesize、@dynamic
self、super、id、_cmd、__block、__strong、__weak、