zoukankan      html  css  js  c++  java
  • 类与类之间的简单传值

    Main.m

    #import <Foundation/Foundation.h>
    #import "Car.h"
    #import "Engine.h"
    #import "Lamp.h"
    
    /*
     设计例如以下几个类,Car自己定义初始化方法,初始化方法传入引擎对象和车灯对象。
        当车启动的时候,会调用引擎转动,车灯亮灯,当车停止的时候调用引擎停止转动,车灯熄灭。
     */
    
    int main(int argc, const char * argv[])
    {
    
        //创建引擎对象
        Engine *engine = [[Engine alloc] initWithModel:@"1234567" withCapacity:3.14];
        //创建车灯对象
        Lamp *lamp = [[Lamp alloc] initWithWattage:60.0];
        
        //创建car对象
        Car *car = [[Car alloc] initWithEngine:engine withLamp:lamp];
        [car setName:@"兰博基尼" withLicence:@"8888888"];
        
        int s;
        while (1) {
            NSLog(@"请输入指令(1:启动   2:停止):");
            scanf("%d",&s);
            
            if (s == 1) {
                [car run];
            }else if (s == 2) {
                [car stop];
            }else {
                NSLog(@"输入非法");
            }
        }
        
        return 0;
    }
    

    Car.h

    #import <Foundation/Foundation.h>
    #import "Engine.h"
    #import "Lamp.h"
    
    @interface Car : NSObject {
    
        NSString *_name;    //车名
        NSString *_licence; //车牌号
        
        Engine *_engine;    //引擎
        Lamp *_lamp;    //车灯
        
    }
    
    //自己定义初始化方法
    - (id)initWithEngine:(Engine *)engine withLamp:(Lamp *)lamp;
    
    - (void)setName:(NSString *)name withLicence:(NSString *)licence;
    
    //车启动
    - (void)run;
    //车停止
    - (void)stop;
    

    Car.m

    #import "Car.h"
    
    @implementation Car
    
    //自己定义初始化方法
    - (id)initWithEngine:(Engine *)engine withLamp:(Lamp *)lamp {
    
        self = [super init];
        
        if (self != nil) {
            _engine = engine;
            _lamp = lamp;
        }
        return self;
    }
    
    - (void)setName:(NSString *)name withLicence:(NSString *)licence {
    
        _name = name;
        _licence = licence;
        
    }
    
    //车启动
    - (void)run {
    
        NSLog(@"车牌号为:%@的%@车启动了",_licence,_name);
        
        [_engine turn];
        [_lamp light];
        
    }
    
    //车停止
    - (void)stop {
        NSLog(@"车牌号为:%@的%@车停止了",_licence,_name);
        
        [_engine stopTurn];
        [_lamp dark];
    }
    
    Engine.h

    #import <Foundation/Foundation.h>
    
    @interface Engine : NSObject{
        
        NSString *_model;   //型号
        float _capacity;    //排量
        
    }
    
    //自己定义初始化方法
    - (id)initWithModel:(NSString *)model withCapacity:(float)capacity;
    
    //转动
    - (void)turn;
    //停止转动
    - (void)stopTurn;

    Engine.m

    //自己定义初始化方法
    - (id)initWithModel:(NSString *)model withCapacity:(float)capacity {
    
        self = [super init];
        
        if (self != nil) {
            _model = model;
            _capacity = capacity;
        }
        
        return self;
    }
    
    //转动
    - (void)turn {
    
        NSLog(@"型号为:%@ 排量为:%.2f的引擎转动了",_model,_capacity);
        
    }
    
    //停止转动
    - (void)stopTurn {
    
        NSLog(@"型号为:%@ 排量为:%.2f的引擎停止转动了",_model,_capacity);
        
    }
    

    Lamp.h

    @interface Lamp : NSObject {
    
        float _wattage; //瓦特
        
    }
    
    //自己定义初始化的方法
    - (id)initWithWattage:(float)wattage;
    
    //灯亮
    - (void)light;
    //熄灯
    - (void)dark;

    Lamp.m

    //自己定义初始化的方法
    - (id)initWithWattage:(float)wattage {
    
        self = [super init];
        
        if (self != nil) {
            _wattage = wattage;
        }
        
        return self;
    }
    
    //灯亮
    - (void)light {
    
        NSLog(@"瓦特数:%.2f的灯亮了",_wattage);
        
    }
    
    //熄灯
    - (void)dark {
    
        NSLog(@"瓦特数:%.2f的灯灭了",_wattage);
        
    }
    



  • 相关阅读:
    MySQL主从复制(7)回顾原理、企业场景部署
    MySQL主从复制(6)故障、快速配置
    *MySQL主从复制(5)实战
    MySQL主从复制(4)原理画图深入浅出
    MySQL主从复制(3)应用场景,切换不丢数据
    MySQL主从复制(2)介绍及分布式架构
    MySQL主从复制(1)DB各种同步方案
    找到小镇的法官
    最长回文子串
    权限管理
  • 原文地址:https://www.cnblogs.com/mfrbuaa/p/4298870.html
Copyright © 2011-2022 走看看