关闭

Object-C 学习笔记(八)---面相对象(继承)

标签: 继承
462人阅读 评论(0) 收藏 举报
分类:

类:是事物共性的抽象.

对象:是一个事物的具体表现.


继承特点:

(1)Object-C是一种单继承的面相对象语言.

(2)提高代码的复用性.

(3)提高代码的扩展性


缺点:提高了代码的耦合度.


例子:

//
//  Animal.h
//  Extend
//
//  Created by 5016 on 13-12-3.
//  Copyright (c) 2013年 dradon. All rights reserved.
//

#import <Foundation/Foundation.h>

@interface Animal : NSObject

@property(retain,nonatomic)NSString* name;//名字
@property(assign,nonatomic)NSInteger age;//年龄
@property(retain,nonatomic)NSString* color;//毛色

-(void)play;
-(void)sleep;
-(Animal *)initWithName:(NSString*)name andAge:(NSInteger) age andColor:(NSString*) color;
@end

//
//  Animal.m
//  Extend
//
//  Created by 5016 on 13-12-3.
//  Copyright (c) 2013年 dradon. All rights reserved.
//

#import "Animal.h"

@implementation Animal

@synthesize name = _name,age = _age,color = _color;

-(void)play
{
    NSLog(@"正在玩耍");
}

-(void)sleep
{
    NSLog(@"正在睡觉");
}

-(Animal *)initWithName:(NSString*)name andAge:(NSInteger) age andColor:(NSString*) color
{
    if (self = [super init]) {
        self.name = name;
        self.age = age;
        self.color = color;
    }
    return self;
}

@end

//
//  Dog.h
//  Extend
//
//  Created by 5016 on 13-12-3.
//  Copyright (c) 2013年 dradon. All rights reserved.
//

#import "Animal.h"

@interface Dog : Animal
-(void)watchDoor;
@end

//
//  Dog.m
//  Extend
//
//  Created by 5016 on 13-12-3.
//  Copyright (c) 2013年 dradon. All rights reserved.
//

#import "Dog.h"

@implementation Dog
-(void)watchDoor
{
    NSLog(@"正在看门口");
}
@end

//
//  Cat.h
//  Extend
//
//  Created by 5016 on 13-12-3.
//  Copyright (c) 2013年 dradon. All rights reserved.
//

#import "Animal.h"

@interface Cat : Animal
-(void)catchMouse;
@end

//
//  Cat.m
//  Extend
//
//  Created by 5016 on 13-12-3.
//  Copyright (c) 2013年 dradon. All rights reserved.
//

#import "Cat.h"

@implementation Cat
-(void)catchMouse
{
    NSLog(@"猫正在抓老鼠");
}
@end

//
//  main.m
//  Extend
//
//  Created by 5016 on 13-12-3.
//  Copyright (c) 2013年 dradon. All rights reserved.
//

#import <Foundation/Foundation.h>
#import "Cat.h"
#import "Dog.h"

int main(int argc, const char * argv[])
{

    Cat *cat = [[Cat alloc] initWithName:@"猫咪" andAge:2 andColor:@"黄色"];
    NSLog(@"这是一只%@,%ld岁,颜色是%@色",cat.name,cat.age,cat.color);
    [cat play];
    [cat sleep];
    [cat catchMouse];
    
    NSLog(@"--------------------------");
    Dog *dog = [[Dog alloc] initWithName:@"考拉" andAge:4 andColor:@"白色"];
    [dog play];
    [dog sleep];
    [dog watchDoor];
    
    
    return 0;
}

猫和狗继承了动物类,于是可以继承动物类的公共类的方法与属性.

private 不能被继承

protect 只能被自己和直接继承的子类使用

public  任何地方可以调用


0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场