02. 方法

1. 方法(method)

    就是類中的函數,寫法和函數不同

    -(返回值類型)方法名;    //無參數

    -(返回值類型)方法名:(參數類型)參數名;    //一個參數

    -(返回值類型)方法名:(參數類型)參數1 :(參數類型)參數2 ...;    //多個參數

    -(返回值類型)部分方法名:(參數類型)參數1 部分方法名:(參數類型)參數2 ...


    ":"是方法名的一部分。


//在TREmployee.h中:
#import <Foundation/Foundation.h>

@interface TREmployee : NSObject
@property NSString *name;
@property int age;
@property BOOL gender;
@property double salary;
- (void) show;    //無參方法
- (void)raiseSalary: (double) money;   //一個參數
- (double) getSlary;
- (NSString*)genderToString;    //返回的是一個對象需用*,返回地址,引用(指針)
- (void) changeName: (NSString*) newName;    //OC對象傳遞需用指針,對象不能隨便拷貝
- (void)set: (NSString*) newName :(int)newAge;    //兩個參數
- (void)set: (NSString*) newName :(int)newAge :(BOOL)newGender : (double)newSalary ;    //四個參數
//方法名由若干部分組成
- (void)setName: (NSString*)newName andAge: (int)newAge;    //部分方法名
- (void)setName: (NSString*)newName 
                    age: (int)newAge
                gender:(BOOL)newGender
                   salary:(double)newSalary;
@end

//在TREmployee.m中:
#import "TREmployee.h"
@implementation TREmployee
- (void) show    //無參方法
{
        NSLog(@"%@, %@, %d, %g", self.name, [self genderToString], self.age, self.salary);
}
- (void)raiseSalary: (double) money   //一個參數
{
        self.salary += money;
}
- (double) getSlary
{
        return self.salary += money;
}
- (NSString*)genderToString    //返回的是一個對象需用*,返回地址,引用(指針)
{
        return self.gender?@"男":@"女";
}
- (void) changeName: (NSString*) newName    //OC對象傳遞需用指針,對象不能隨便拷貝
{
        self.name = newName;        
}
- (void)set: (NSString*) newName :(int)newAge    //兩個參數
{
        self.name  = newName;
        self.Age = newAge;
}
- (void)set: (NSString*) newName :(int)newAge :(BOOL)newGender : (double)newSalary 
{
        self.Name = newName;
        self.Age = newAge;
        self.Gender = newGender;
        self.salary = newSalary;
}
- (void)setName: (NSString*)newName andAge: (int)newAge   //部分方法名
{
        self.name = newName;
        self.Age = newAge;
}
- (void)setName: (NSString*)newName 
                    age: (int)newAge
                gender:(BOOL)newGender
                   salary:(double)newSalary
{
        self.name = newName;
        self.age = newAge;
        self.gender = newGender;
        self.salary = newSalary
}
@end

//在main.m中:
#import "TREmployee.h"

void test1()
{
        TREmployee *e = [TREmployee alloc];
        [e show];
        e.name = @"Daniel";
        [e set:@"Daniel" :30];
        [e show];
        [e raiseSalary:10000];
        [e show];
        [e set: @"Daniel" :30 :YES :1234567.78];
        [e show];
        [e changeName: @"Guodh"];
        [e show];
        [e set:@"Guodenghong" :31 :YES :123456.78];
        [e setName:@"Daniel" andAge: 32];
        NSLog(@"你的工資是多少:%g", [e getSalary]);
        [e setName:@"Daniel" age:30 gender:YES salary:12345];    //部分方法名,最實用
}

int main(int argc, const char *argv[])
{
        @autoreleasepool {
                test1();
        }
        return 0;
}




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章