OC 方法 继承 多态

#import <Foundation/Foundation.h>
#import "Human.h"
#import "Person.h"
#import "Student.h"
int main(int argc, const char * argv[]) {
    @autoreleasepool {


    Human *human = [[Human alloc] init];
//
    [human buyWater];

    /*
     -:实例方法
     1.调用方式
     [对象  方法名]
     2.格式
     - (返回值类型)方法名;
     - (返回值类型)方法名参数描述名1:(参数类型)参数名;
     - (返回值类型)方法名参数描述名1:(参数类型)参数名1 参数描述名2:(参数类型)参数名2 .....
     */

//        //无返回值,无参数
        [human sayHi];
//        //无返回值,有一个参数
        [human lentOfMoney:100];
        //无返回值,传两个参数
        [human drinkOfWater:@"农夫山泉" tea:@"铁观音"];
        //有返回值,有一个参数
        NSString *tea = [human drinkTea];
        NSLog(@"tea:%@",tea);
        //有返回值,有多个参数
        NSString *newString = [human drinkOfOtherWater:@"矿泉水" tea:@"绿茶"];
        NSLog(@"new:%@",newString);

     NSInteger sum = [human sumOfNumber:100 otherNumber:200];
        NSLog(@"sum = %ld",sum);

//        /*
//         +:类方法
//         1.调用方式
//         [类名 方法名]
//         */
//        
        [Human test];

//         Human *human1 = [Human human];
//
//         Human *human2 = [Human humanWithName:@"lili" age:22];


        Human *human1 = [[Human alloc] init];

        [human1 setName:@"lili"];
       // NSLog(@"%@",[human1 name]);

        [human1 setAge:11];

        //点语法
        human1.name = @"lili";
        NSLog(@"%@",human1.name);

        human1.age = 11;
       // NSLog(@"%ld",human1.age);

        NSLog(@"human1 = %@",human1);
//
//  
        Student *student = [[Student alloc] init];
        student.name = @"tom";
        [student hello];

        [student test];

        [Student test];


//        Student *student = [[Student alloc]
//        init];
//
        Person *person = [[Student alloc] init];
        [person hello];



         }
    return 0;
}

#import <Foundation/Foundation.h>

@interface Human : NSObject
{
/*
    @protected(默认):本类和他的子类的方法可以访问
    @private:本类的方法可以访问
    @public
 */
    //成员变量
    NSString *_name;
    NSInteger _age;
}

- (instancetype)initWithName:(NSString *)name age:(NSInteger)age;

+ (Human *)humanWithName:(NSString *)name age:(NSInteger)age;

//行为动作
- (void)buyWater;

//实例方法

//无返回值,无参数
//打招呼
- (void)sayHi;

//无返回值,有一个参数
- (void)lentOfMoney:(NSInteger)money;
//无返回值,有2个参数
- (void)drinkOfWater:(NSString *)water tea:(NSString *)tea;

//有返回值,无参数
- (NSString *)drinkTea;

//有返回值,有多个参数
- (NSString *)drinkOfOtherWater:(NSString *)water tea:(NSString *)tea;

- (NSInteger)sumOfNumber:(NSInteger)number otherNumber:(NSInteger)otherNumber;

//类方法
+ (void)test;

+ (Human *)human;

//setter,getter
- (void)setName:(NSString *)name;
- (NSString *)name;

- (void)setAge:(NSInteger)age;
- (NSInteger)age;

@end
#import "Human.h"

@implementation Human

- (instancetype)initWithName:(NSString *)name age:(NSInteger)age
{
    self = [super init];
    if (self) {
        _name = name;
        _age = age;
    }
    return self;
}
- (void)buyWater{
    NSLog(@"我想喝水,你帮我买!");
}

- (void)sayHi{

    NSLog(@"早上好");

}

- (void)lentOfMoney:(NSInteger)money{

    NSLog(@"请你借%ld",money);

}
- (void)drinkOfWater:(NSString *)water tea:(NSString *)tea{

    NSLog(@"我想喝%@泡的%@茶",water,tea);
}

- (NSString *)drinkTea{

  return @"红茶";
}

- (NSString *)drinkOfOtherWater:(NSString *)water tea:(NSString *)tea{


    NSString *string = [NSString stringWithFormat:@"我想喝%@泡的%@茶",water,tea];

    return string;
}

- (NSInteger)sumOfNumber:(NSInteger)number otherNumber:(NSInteger)otherNumber{

    return number + otherNumber;
}

+ (void)test{

    NSLog(@"类方法test");
}

+ (Human *)human{

    Human *human1 = [[Human alloc] init];
    return human1;

}

+ (Human *)humanWithName:(NSString *)name age:(NSInteger)age{

    Human *human = [[Human alloc] initWithName:name age:age];
    return human;

}


//setter,getter
- (void)setName:(NSString *)name{

    _name = name;
    NSLog(@"_____%@",_name);

}
- (NSString *)name{

    return _name;
}

- (void)setAge:(NSInteger)age{
    if (age < 0) {
        _age = 18;
        return;
    }else{
    _age = age;
    }
}

- (NSInteger)age{
    return _age;
}


- (NSString *)description{

    NSString *string = [NSString stringWithFormat:@"name:%@,age = %ld",_name,_age];
    return string;
}
@end
#import <Foundation/Foundation.h>

@interface Person : NSObject
{

    NSString *_name;
    NSInteger _age;
}
- (void)setName:(NSString *)name;
- (NSString *)name;

- (void)setAge:(NSInteger)age;
- (NSInteger)age;

- (void)hello;

@end
#import "Person.h"

@implementation Person
- (void)setName:(NSString *)name{
    _name = name;

}
- (NSString *)name{
    return _name;
}

- (void)setAge:(NSInteger)age{
    _age = age;
}
- (NSInteger)age{
    return _age;
}

- (void)hello{
    NSLog(@"person hello");
}
@end
#import <Foundation/Foundation.h>
#import "Person.h"
@interface Student : Person
{
//    NSString *_name;
//    NSInteger _age;
    NSString *_code;
}
- (void)setName:(NSString *)name;
- (NSString *)name;

- (void)setAge:(NSInteger)age;
- (NSInteger)age;

- (void)setCode:(NSString *)code;
- (NSString *)code;

+ (void)test;
- (void)test;

- (void)hello;
@end
#import "Student.h"

@implementation Student
- (void)setName:(NSString *)name{
    _name = name;
}
- (NSString *)name{
    return _name;
}

- (void)setAge:(NSInteger)age{
    _age = age;
}
- (NSInteger)age{
    return _age;
}
//
- (void)setCode:(NSString *)code{
    _code = code;
}

- (NSString *)code{
    return _code;
}

- (void)hello{
    NSLog(@"student hello");
}

- (void)test{
    NSLog(@"---:%@",self);
}

+ (void)test{
    NSLog(@"+++++:%@",self);
}
@end
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值