黑马程序员——方法的声明和实现、匿名访问

  ------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------

一、方法的声明和实现

1、不带参数的方法

    举例:设计一个返回PI的方法

    //方法声明

     - (double)pi;

    //方法实现

     - (double)pi

    {

    return3.14;

    }

方法调用

2、带一个参数的方法

    举例:设计一个计算平方的方法

    //方法声明

    - (double)square:(double)number;

    //方法实现

    - (double)square:(double)number

    {

  return number * number;

    }

方法调用

3、带多个参数的方法

    举例:设计一个计算和的方法

    //方法声明

    - (double)sumOfNum1:(double)num1andNum2:(double)num2;

   //方法实现

   - (double)sumOfNum1:(double)num1andNum2:(double)num2

   {

    return num1 + num2;

   }

方法调用

4、程序代码和结果

<span style="font-size:18px;">#import <Foundation/Foundation.h>

/*
 计算器类
 方法:
 1> 返回 π
 2> 计算某个整数的平方
 3> 计算两个整数的和
 */

@interface JiSuanQi : NSObject

// 方法名:pi
- (double)pi;

// OC方法中,一个参数对应一个冒号
// 方法名:pingFang:(冒号也是方法名的一部分)
- (int)pingFang:(int)num;

//- (int)sum:(int)num1 :(int)num2;
// 方法名:sumWithNum1:andNum2:
- (int)sumWithNum1:(int)num1 andNum2:(int)Num2;


//- (int)sumWithNum1:(int)num1 andNum2:(int)num2 andNum3:(int)num3;
@end

@implementation JiSuanQi

- (double)pi
{
    return 3.14;
}

- (int)pingFang:(int)num
{
    return num * num;
}

//- (int)sum:(int)num1 :(int)num2
-(int)sumWithNum1:(int)num1 andNum2:(int)num2
{
    return num1 + num2;
}
@end

int main()
{
    JiSuanQi *jsq = [JiSuanQi new];
    
    
    int a = [jsq sumWithNum1:20 andNum2:5];
    //int a = [jsq sum:10 :5];
    
    //int a =  [jsq pingFang:10];
    
    //double a = [jsq pi];
    NSLog(@"%i", a);
    
    return 0;
}</span>


 

5、总结

 冒号也是方法名的一部分

 同一个类中不允许两个对象方法同名

 


二、方法的声明和实现实例分析

1、程序代码和结果

<span style="font-size:18px;">/****************************
 设计一个方法,用来和其他车比较车速,返回车速的差距
 ****************************/

#import <Foundation/Foundation.h>

@interface Car : NSObject
{
@public
    int speed;
}

- (int)compareSpeedWithOther:(Car *)other;

@end

@implementation Car

- (int)compareSpeedWithOther:(Car *)other
{
    // speed
    // other->speed
    // 返回当前这辆车和other这辆车的速度差距
    return speed - other->speed;
}

@end

int main()
{
    Car *c1 = [Car new];
    c1->speed = 300;
    
    Car *c2 = [Car new];
    c2->speed = 250;
    
    int a = [c1 compareSpeedWithOther:c2];
    
    NSLog(@"a=%d", a);
    
    return 0;
}</span>


 

2、总结

       类、对象、类的成员变量的命名一定要规范且详细。

     OC对象中一个参数对一个冒号。




三、匿名访问


1、实例分析

    属性访问:

         [Car new]->speed = 200;

    方法调用:

         [ [Car new] run];

         NSLog(@”这辆车的速度为%dkm/h”,speed);输出结果:这辆车的速度为0km/h。注意这里不是200km/h

2、总结

        一旦使用[对象名称new];这个方法,就会创建一个新的对象,会分配新内存。

    禁止写这类代码,会造成内存泄漏。只要求看懂。

 

                                  ------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------




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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值