第四天-继承练习

//
//  main.m
//  04-继承练习
//
//  Created by Apple on 14/11/21.
//  Copyright (c) 2014年 itcast. All rights reserved.
//

#import <Foundation/Foundation.h>
/*
  继承练习:
 
  实现一个
  iPhone的类,它具有
  属性
      颜色 _color;
      内存 _ram;
      摄像头 _camera
  功能
      打电话
      拍照
 
  实现iPhone2类
     iPhone的类,它具有
  属性:
         颜色 _color;
         内存 _ram;
         摄像头 _camera
         闪光灯: _flashlight;
  功能:
     打电话
     照明
     拍照

 */

//导入CZIPhone的.h文件

#import "CZIPhone.h"
#import "CZIPhone2.h"
int main(int argc, const char * argv[]) {
  
    CZIPhone *iphone  = [CZIPhone new];
    [iphone call:@"110"];
    [iphone takePhoto];
    
    CZIPhone2 *iphone2 =  [CZIPhone2 new];
    [iphone2 call:@"10086"];
    
//   打开闪关灯
//    [iphone2 light];
    
    [iphone2 takePhoto];
    return 0;
}

//
//  CZIPhone.h
//  1121-知识点的回顾
//
//  Created by Apple on 14/11/21.
//  Copyright (c) 2014年 itcast. All rights reserved.
//

#import <Foundation/Foundation.h>
/*
 实现一个
 iPhone的类,它具有
 属性
 颜色 _color;
 内存 _ram;
 摄像头 _camera
 功能
 打电话
 拍照
 */
//定义颜色枚举

//enum _CZColor{
//    CZColorWhite,//白色
//    CZColorBlack//黑色
//};
//
////起一个别名
//typedef enum _CZColor CZColor;


//上面的两个代码和在一起
typedef enum _CZColor{
    CZColorWhite,//白色
    CZColorBlack//黑色
} CZColor;


@interface CZIPhone : NSObject
{
    CZColor _color;//定义颜色成员变量
    int _ram;//内存
    NSString *_camera;//摄像头:800万像素
}
// 从这里开始
- (void) setColor:(CZColor) color;

- (CZColor) color;

- (void) setRam:(int) ram;

- (int) ram;

- (void) setCamera:(NSString *) camera;

- (NSString *) camera;
//到这里都是 setter 和 getter方法


//打电话
- (void) call:(NSString *) phoneNum;

//拍照
- (void) takePhoto;

@end

//
//  CZIPhone.m
//  1121-知识点的回顾
//
//  Created by Apple on 14/11/21.
//  Copyright (c) 2014年 itcast. All rights reserved.
//

#import "CZIPhone.h"

@implementation CZIPhone
// 从这里开始
- (void) setColor:(CZColor) color
{
    _color = color;
}

- (CZColor) color
{
    return _color;
}

- (void) setRam:(int) ram
{
    _ram = ram;
}

- (int) ram
{
    return _ram;
}

- (void) setCamera:(NSString *) camera
{
    _camera = camera;
}

- (NSString *) camera
{
    return _camera;
}
//到这里都是 setter 和 getter方法


//打电话
- (void) call:(NSString *) phoneNum
{
    NSLog(@"CZIPhone 给 %@ 的人打电话!",phoneNum);
}

//拍照
- (void) takePhoto
{
    NSLog(@"CZIPhone takePhoto");
}
@end

//
//  CZIPhone2.h
//  1121-知识点的回顾
//
//  Created by Apple on 14/11/21.
//  Copyright (c) 2014年 itcast. All rights reserved.
//

#import "CZIPhone.h"
// 声明类的时候,类后面 :父类的名称
/*
 实现iPhone2类
 iPhone的类,它具有
 属性:
 颜色 _color;
 内存 _ram;
 摄像头 _camera
 闪光灯: _flashlight;
 功能:
 打电话
 照明
 拍照
 
 */



@interface CZIPhone2 : CZIPhone
{
    BOOL  _flashlight;//闪光灯状态,YES表示打开,NO表示关闭
}

- (void) light;

//父类中已经声明拍照的共鞥了,所以此处就不要再声明了

@end

//
//  CZIPhone2.m
//  1121-知识点的回顾
//
//  Created by Apple on 14/11/21.
//  Copyright (c) 2014年 itcast. All rights reserved.
//

#import "CZIPhone2.h"

@implementation CZIPhone2

- (void) light
{
    if (_flashlight == NO) {
        NSLog(@"打开闪光灯");
        _flashlight = YES;
    }else{
        NSLog(@"闪光灯已经打开了");
    }
}
//当子类中实现与父类同名的方法的时候,子类中的方法会覆盖父类的方法

- (void) takePhoto
{
//  打开闪光灯
    [self light];
//  重写了父类还想使用父类的功能
//  super只有一个作用,就是调用父类的方法
//  如果在子类中想使用父类方法,就必须使用super关键字
    [super takePhoto];
    
    _flashlight = NO;
    NSLog(@"闪关灯关闭了!");
}
@end


你可能感兴趣的:(第四天-继承练习)