oc学习之类的创建和注意事项

最近由于ios项目需求原因,学习了ios,但是由于基础不扎实的原因,做的很吃力,所以每天就带着学习了OC的语法基础,今天主要介绍的是关于OC类的创建和调用,和注意点。

类的示范

//OC中创建类
//OC中一个类包含两个部分
//声明和实现
/*
  类的声明必须以@interface开头,必以@end结尾
  类的实现必须以@implementation开头,必以@end结尾

  NSObject:基类,所有类的祖先类
  : NSObject 作用是让Person类具有创建对象的能力
  Person
  注意点:如果一个类中只有声明没有实现,那么这个类在链接的就报错,是不可创建成功
  OC中方法声明的格式
  无形参:  方法类型符 (返回值类型) 方法名称
  对象方法:是属于对象的,只能通过对象调用,他的 方法类型符 是 -

 */
@interface Person : NSObject
{
// 一定要在大括号中声明类的属性(成员变量)
//  命名规则:标识符规则
//  命名规范:必须以_开头,_后面的首字母是小写,其后的单词首字母大写
@public
    char *_name;
    int _age;
}

/**
 *  秀
 */
- (void) show;
/**
 *  吃
    带有一个参数的方法
 */
- (void) eat:(char *)food;
/**
 *  吃
 *
 *  @param food  食物
 *  @param tools 工具
 */
- (void) eat:(char *)food using:(char *)tools;
/*
   1、:是方法名称的一部分
   2、一个:对应一个形参
   3、方法声明中的所有数据类型都要使用小括号括起来
   4、:前面的文字用来描述参数的作用的
   5、:前面的参数说明符是可以省略的,但是开发千万不要省略的
 */
@end

@implementation Person

- (void) show
{
//  对象方法中可以直接访问,该对象的成员变量
    NSLog(@"name = %s,age = %d",_name,_age);
}

/**
 *  吃
 *
 *  @param food 食物
 */
- (void) eat:(char *)food
{
    NSLog(@"吃了 %s",food);
}
- (void) eat:(char *)food using:(char *)tools
{
    NSLog(@"使用 %s 吃 %s  ",tools,food);
}
@end
int main(int argc, const char * argv[]) {
 /*
    [类名 new] 作用 通过类来创建一个对象
     1、为Person这个对象在堆中分配内存
     2、初始化成员变量
     3、返回指向刚刚创建出来的对象的指针
  */
    Person *p1  = [Person new];
    p1->_age = 10;
    p1->_name = "xiaohu";  
//    NSLog(@"%p,%d",p1,p1->_age);
    [p1 show];   
    [p1 eat:"beef"]; 
    [p1 eat:"beef" using:"knife"]; 
    return 0;
}

类的声名

@interface Person : NSObject
{
// 一定要在大括号中声明类的属性(成员变量)
//  命名规则:标识符规则
//  命名规范:必须以_开头,_后面的首字母是小写,其后的单词首字母大写
@public
    char *_name;
    int _age;
}
@end

类的声名主要是加上关键字@interface <类名>:<继承的对象类>{}
最后以@end进行结尾。

类的实现

@implementation Person
 1. (void) show
{
//  对象方法中可以直接访问,该对象的成员变量
    NSLog(@"name = %s,age = %d",_name,_age);
}
 2. (void) eat:(char *)food
{
    NSLog(@"吃了 %s",food);
}
 3. (void) eat:(char *)food using:(char *)tools
{
    NSLog(@"使用 %s 吃 %s  ",tools,food);
}
@end

注释:主要是@implementation <类名> 最后以@end进行结尾

对象方法的调用

int main(int argc, const char * argv[]) {
 /*
    [类名 new] 作用 通过类来创建一个对象
     1、为Person这个对象在堆中分配内存
     2、初始化成员变量
     3、返回指向刚刚创建出来的对象的指针
  */
    Person *p1  = [Person new];
    p1->_age = 10;
    p1->_name = "xiaohu";  

    [p1 show];   
    [p1 eat:"beef"]; 
    [p1 eat:"beef" using:"knife"]; 
    return 0;
}

注释:
1.首先OC中的类声名,其实就是c语言中的结构体,所以他的调用成员变量的时候,就是运用关于结构体P->_name=10;
4.
Person *p1 = [Person new];
[类名 new] 作用 通过类来创建一个对象
1、为Person这个对象在堆中分配内存
2、初始化成员变量
3、返回指向刚刚创建出来的对象的指针

类的注意点和知识点

**1. 类中的所有的成员变量默认为私有属性,就是说外部类访问不了,只有自己类的实现可以。
2. 成员的声明必须放在@interface 与 @end之间{}中,不能放在大括号外
3. 方法的声明必须放在{} 与@end之间
4. @implementation 作用就是用来实现方法的
5. 如果你类只有声明没有实现那么链接就会报错**

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值