Objective-C教程之类中方法的声明,实现和调用附注意事项(03)

本文详细讲解Objective-C中类方法的声明、实现和调用过程,并强调了使用时的注意事项,通过实例展示了控制台输出结果。

类中方法的声明,实现和调用

知识点:方法的声明;方法的实现;方法的调用。

#import <Foundation/Foundation.h>

@interface Person : NSObject
{
    @public
    NSString *_name;
    int _age;
}
//声明一个不带参数的方法
- (void)eat;
//声明带单个参数的方法
- (void)foodName:(NSString *)foodName;
//声明带多个参数的方法
- (int)sum:(int)num1 :(int)num2;
@end //Person

@implementation Person
- (void)eat
{
    NSLog(@"我在吃东西呢");
}
- (void)foodName:(NSString *)foodName
{
    NSLog(@"这个%@不错哟", foodName);
}
- (int)sum:(int)num1 :(int)num2
{
    return num1 + num2;
}
@end //person

int main(int argc, const char * argv[]) {
    //用Person类实例化出一个p1对象
    Person *p1 = [Person new];
    
    //对象调用不带参数的方法
    [p1 eat];
    //对象调用带一个参数的方法
    [p1 foodName: @"苹果"];
    //对象调用带多个参数的方法
    int sum = [p1 sum:1 :2];
    NSLog(@"sum = %d", sum);
    
    return 0;
}
/*
 类中方法的声明,实现和调用
 
 1. 方法的声明
    位置:方法在@interface定义属性的大括号之后,@end之前声明
    语法:1)不带参数的方法     - (返回类型)方法名;
         2)带单个参数的方法     - (返回类型)方法名:(参数类型)形参名;
         3)带多个参数的方法     - (返回类型)方法名:(参数类型)形参名1 :(参数类型)形参名2 :(参数类型)形参名3;
 2. 方法的实现
    方法经过声明之后还不能调用,需要经过实现
    位置:方法在@implementation和@end之间实现
    语法:1)不带参数的方法
             - (返回类型)方法名
             {
                代码
             }
         2)带单个参数的方法
             - (返回类型)方法名:(参数类型)形参名
             {
                代码
             }
         3)带多个参数的方法
             - (返回类型)方法名:(参数类型)形参名1 :(参数类型)形参名2 :(参数类型)形参名3
             {
                代码
             }
        (返回类型与方法名均与声明时一致,和方法的声明相比,末尾没有分号)
 3. 方法的调用
    1)方法是无法直接调用的,需要先创建一个对象。
    2)语法:
        a.调用不带参数的方法:[对象名 方法名];
        b.调用带单个参数的方法:[对象名 方法名:参数];
        c.调用带多个参数的方法:[对象名 方法名:参数1 :参数2 :参数3];
*/

查看控制台输出结果:
控制台输出

注意事项

#import <Foundation/Foundation.h>

@interface Person : NSObject
{
    @public
    NSString *_name;
    int _age;
}
- (void)selfInfo;
@end //Person

@implementation Person
- (void)selfInfo
{
    //此方法的实现中直接访问了_name和_age属性
    NSLog(@"大家好,我是%@,今年%d岁啦~", _name, _age);
}
@end //person

int main(int argc, const char * argv[]) {
    //用Person类实例化出一个p1对象
    Person *p1 = [Person new];
    p1->_name = @"Emun";
    p1->_age = 20;
    
    [p1 selfInfo];
    
    //用Person类实例化出一个p1对象
    Person *p2 = [Person new];
    p2->_name = @"棠念";
    p2->_age = 18;
    
    [p2 selfInfo];
    
    return 0;
}
/*
 有关类的注意事项
 1.同一个类可以创建无数个对象,同一个类的多个对象之间毫无关系,不同对象之间的属性值不会互相影响。
 2.在方法的实现中,可以直接访问属性;那在不同对象调用该方法时,属性值到底是谁的呢?
    注意:一个对象通过方法访问到的属性值是该对象自身的属性值
 3.注:为了增加语法上的可读性,带多个参数的方法定义时方法名可去xxxWith,如:
     例一:
         定义时-- (void)eatWith:(NSString *)foodName;
         调用时-- [p1 eatWith: @"苹果"];
         或
         定义时-- (void)eatWithFood:(NSString *)foodName;
         调用时-- [p1 eatWithFood: @"苹果"];
     例二:
         定义时-- - (int)sumNumOne:(int)num1 andNumTwo:(int)num2;
         调用时-- [p1 sumNumOne:15 andNumTwo:26];
 */

查看控制台输出结果:
控制台输出
加油~~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值