当前位置: 代码迷 >> 综合 >> day01-方法的声明和实现
  详细解决方案

day01-方法的声明和实现

热度:54   发布时间:2024-02-23 17:09:50.0


/*
 1 定义一个类
 分为声明和实现
 @interface 类名 :NSObject{
 属性。属性表示类的特征
 }
 方法的声明表示功能
 @end
 
 @implementation 类名
 
 @end
 
 2一类食物不仅有相同的特征还有相同的行为
 
 行为就是功能。C语言中使用函数来表示一个功能
 OC使用方法来表示一个功能
 
 方法函数都表示一个功能
 
 3 无参数方法
   1)声明
   位置。在interface大括号的外面
   2)语法
 -(返回值类型)方法名称;
 -(void)run;
表示声明了一个无返回值无参数的方法,方法名字叫run
 
 3)实现的方法
 将方法声明拷贝到@implementation之中去掉分号,增加大括号 将方法实现写在代码中
 
 3。 调用
 
     a  方法是无法直接调用的。因为类无法直接使用 必须先创建对象
        这个对象就有类中的属性和方法了,对象就可以调用方法了
     b 调用对象的方法
 
       [对象名 方法名];
    代码:
 
      Person *p =[Person new];
      [p run];
 
 4 带一个参数的方法
 
   1)声明
     a 位置。在interface大括号的外面
   2)语法
      -(返回值类型)方法名称:(参数类型)行参的名称;
    -(void)eat:(NSString *)foodname;
 
      定义了一个方法 这个方法没有返回值
      方法名字叫eat
      这个方法有一个参数类型为NSString *。名字为foodname
 
 
   3)实现的方法
 将方法声明拷贝到@implementation之中去掉分号,增加大括号 将方法实现写在代码中
 
 3。 调用
 
    a  方法是无法直接调用的。因为类无法直接使用 必须先创建对象
    这个对象就有类中的属性和方法了,对象就可以调用方法了
     b 调用对象的方法
 
    [对象名 方法名:实参];
     代码:
 
     Person *p =[Person new];
     [p eat:花生];
 
 
     方法头里面的数据类型全要用小括弧括起来
 
     -(返回值类型)方法名称:(参数类型)参数名称;
 5 多个参数的方法
   1 声明
     a 位置
       在interface大括号的外面
     b语法
        -(返回值类型)方法名称:(参数类型)行参的名称 :(参数类型)行参的名称 :(参数类型)行参的名称;
        -(int)sum:(int ) num1 :(int ) num2;
         表示声明了一个方法 这个方法的返回值是int类型的
        方法的名称叫sum
        两个参数 都int类型
    实现
     位置。  将方法声明拷贝到@implementation之中去掉分号,增加大括号 将方法实现写在代码中
 
    调用‘
   [对象名 方法名:实参:实参];
 
   [p sum:1 :2];
 
 
 6 带参数方法声明的规范
 
 如果方法只有一个参数 要求最好这个方法的名字叫 xxxWith:
 eat
 eatWithxxx
 eatWithFood
 
  这样写调用方法时,看起来像一个完整的语句 提高代码的可读性
 
 2 如果方法有多个参数
 -(返回值类型)方法名:(参数类型1) 参数名字1 and:(参数类型2) 参数名字2;
 -(int)sumWith:(int ) num1 and:(int ) num2;
 
 //可读性更强
 -(int)sumWithNum1:(int) num1 andNum2:(int) num2;
 
 使用
 int sum2 = [p sumWith: 1 and:4 ];
 NSLog(@"sum2 = %d",sum2);
 
 详细写法
 -(返回值类型)方法名Whit参数名1:(参数类型1) 参数名字1 and参数名字2:(参数类型2) 参数名字2;
 
 */

#import <Foundation/Foundation.h>
@interface Person :NSObject{
    NSString  *_name;
    int _age;
}

-(void)run;
-(void)eatWith:(NSString *)foodname;
//计算两个函数的值
-(int)sum:(int ) num1 :(int ) num2;

-(int)sumWith:(int ) num1 and:(int ) num2;
-(int)sumWithNum1:(int ) num1 andNum2:(int ) num2;
@end

@implementation Person
-(void)run{
    NSLog(@"我是人,我在学习IOS开发");
}
-(void)eatWith:(NSString *)foodname{
      NSLog(@"你给我的%@,真好吃",foodname);
}

-(int)sum:(int ) num1 :(int) num2{
    int num3 = num1 + num2 ;
    return num3;
}


-(int)sumWith:(int ) num1 and:(int ) num2{
    
    int sum4 = num1 + num2;
    return sum4;
    
}
-(int)sumWithNum1:(int ) num1 andNum2:(int ) num2{
    int sum4 = num1 + num2;
    return sum4;
}
@end

int main(int argc, const char * argv[]) {
    @autoreleasepool {
     
        
        Person *p =[Person new];
        [p run];
        //diaoyong  一个参数方法
        
        [p eatWith:@"花生"];
         [p sum:1 :2];
        int sum =  [p sum:1 :2];
          NSLog(@"sum = %d",sum);
        
         int sum2 = [p sumWith: 1 and:4 ];
           NSLog(@"sum2 = %d",sum2);
        int sum3 = [p sumWithNum1:3 andNum2:6];
        NSLog(@"sum3 = %d",sum3);
    }
   
}