zoukankan      html  css  js  c++  java
  • OC3-父类指针指向子类对象

    //
    //  Cat.h
    //  OC3-父类指针指向子类对象
    //
    //  Created by qianfeng on 15/6/17.
    //  Copyright (c) 2015年 qianfeng. All rights reserved.
    //
    
    #import "Animal.h"
    
    @interface Cat : Animal
    {
        float _height;
    }
    @property (assign,nonatomic)float height;
    @end
    
    
    //
    //  Cat.m
    //  OC3-父类指针指向子类对象
    //
    //  Created by qianfeng on 15/6/17.
    //  Copyright (c) 2015年 qianfeng. All rights reserved.
    //
    
    #import "Cat.h"
    
    @implementation Cat
    -(void)printAnimalFood
    {
        NSLog(@"cat like to eat fish");
    }
    -(NSString *)description
    {
        return [NSString  stringWithFormat:@"name=%@,age=%li,height=%.2f",_name,_age,_height];
    }
    @end
    //
    //  Dog.h
    //  OC3-父类指针指向子类对象
    //
    //  Created by qianfeng on 15/6/17.
    //  Copyright (c) 2015年 qianfeng. All rights reserved.
    //
    
    #import "Animal.h"
    
    @interface Dog : Animal
    {
        float _weight;
    }
    -(void)printAnimalHaHa;
    @property (assign,nonatomic) float weight;
    @end
    
    
    //
    //  Dog.m
    //  OC3-父类指针指向子类对象
    //
    //  Created by qianfeng on 15/6/17.
    //  Copyright (c) 2015年 qianfeng. All rights reserved.
    //
    
    #import "Dog.h"
    
    @implementation Dog
    -(void)printAnimalFood
    {
        NSLog(@"dog like to eat bone");
    }
    //-(NSString *)description
    //{
    //    return [NSString stringWithFormat:@"name=%@,age=%li,weight=%.2f",_name,_age,_weight];
    //}
    
    -(void)printAnimalHaHa
    {
        NSLog(@"HaHa");
    }
    @end
    //
    //  Animal.h
    //  OC3-父类指针指向子类对象
    //
    //  Created by qianfeng on 15/6/17.
    //  Copyright (c) 2015年 qianfeng. All rights reserved.
    //
    
    #import <Foundation/Foundation.h>
    
    @interface Animal : NSObject
    
    {
        NSString *_name;
        NSInteger _age;
    }
    @property (copy,nonatomic)NSString *name;
    @property(assign,nonatomic)NSInteger age;
    -(void)printAnimalFood;
    @end
    
    
    //
    //  Animal.m
    //  OC3-父类指针指向子类对象
    //
    //  Created by qianfeng on 15/6/17.
    //  Copyright (c) 2015年 qianfeng. All rights reserved.
    //
    
    #import "Animal.h"
    
    @implementation Animal
    -(void)printAnimalFood
    {
        NSLog(@"-----Animal");
    }
    -(NSString *)description
    {
        return [NSString stringWithFormat:@"name111=%@,age=%li",[self name],self.age];
    }
    @end
    //
    //  main.m
    //  OC3-父类指针指向子类对象
    //
    //  Created by qianfeng on 15/6/17.
    //  Copyright (c) 2015年 qianfeng. All rights reserved.
    //
    
    #import <Foundation/Foundation.h>
    #import "Dog.h"
    #import "Cat.h"
    #import "Animal.h"
    
    void showAnimalFood(Animal *ani)
    {
        [ani printAnimalFood];
    }
    int main(int argc, const char * argv[]) {
        @autoreleasepool {
           
            Dog    *xiaohei =[[Dog alloc] init];
            xiaohei.name=@"xiaogei";
            xiaohei.age=12;
            xiaohei.weight=12.6;
            
            //[xiaohei description];
            NSLog(@"%@",xiaohei);
            
            Cat *xiaomao =[[Cat alloc] init];
            xiaomao.name=@"xiaomao";
            xiaomao.age=12;
            xiaomao.height=12.6;
            //[xiaohei description];
            NSLog(@"%@",xiaomao);
            //父类的对象指针可以指向子类的对象
            //调用的方法看具体的对象类型,先从子类查找对应的方法实现,如果子类没有实现对应的方法,跳到父类查找对应的方法实现,如果父类没有实现对应的方法,再跳到父类的父类查找对应的方法实现.
            Animal *ani =xiaohei;
            [ani printAnimalFood];
            
            ani=xiaomao;
            [ani printAnimalFood];
            
            
            showAnimalFood(xiaomao);
            showAnimalFood(xiaohei);
            //根据传入的不同的对象,做出不同的响应.多态
            
        }
        return 0;
    }
  • 相关阅读:
    VS2008无法切换到视图设计器
    Log4net使用笔记
    VS2008无法切换到视图设计器
    openstack(Pike 版)集群部署(五)--- Neutron 部署
    openstack(Pike 版)集群部署(四)--- Nova 部署
    Centos 7 MariaDB Galera cluster 部署
    Centos 7 RabbitMQ + Haproxy 集群高可用部署
    openstack(Pike 版)集群部署(三)--- Glance 部署
    openstack(Pike 版)集群部署(二)--- Keystone 部署
    openstack(pike 版)集群部署(一)----基础环境部署
  • 原文地址:https://www.cnblogs.com/0515offer/p/4582999.html
Copyright © 2011-2022 走看看