zoukankan      html  css  js  c++  java
  • 简单的封装继承多态

    首先创建一个工程, 然后创建一个动物类(Animal),然后再创建一个猫类和一个狗类,最后创建一个人类来给动物喂食。

    动物类继承NSObject

    而猫类和狗类继承动物类

    人类喂食也继承NSObject

    动物类

    //类的声明
    
    #import <Cocoa/Cocoa.h>
    
    @interface Animal : NSObject
    -(void)jiao;
    -(void)eat;
    @end
    
    //类的实现
    #import "Animal.h"
    
    @implementation Animal
    -(void)jiao
    {
        NSLog(@"");
    }
    -(void)eat
    {
        NSLog(@"");
    }
    @end

    猫类

    #import "Animal.h"
    
    @interface Cat : Animal
    -(void)jiao;
    @end
    
    
    
    
    #import "Cat.h"
    
    @implementation Cat
    -(void)jiao
    {
        NSLog(@"喵喵叫");
    }
    -(void)eat
    {
        NSLog(@"猫吃鱼");
    }
    @end

    人类喂食

    #import <Foundation/Foundation.h>
    #import "Animal.h"
    @interface Weishi : NSObject
    
    
    -(void)feed:(Animal *) animal;
    @end
    
    
    
    
    #import "Weishi.h"
    
    @implementation Weishi
    -(void)feed:(Animal *)animal
    {
        [animal eat];
    }
    @end

    最后在主函数里面实例化对象

    #import <Foundation/Foundation.h>
    #import "Animal.h"
    #import "Cat.h"
    #import "Dog.h"
    #import "Weishi.h"
    int main(int argc, const char * argv[]) {
        @autoreleasepool {
           
            id test=[[Animal alloc]init];
            [test jiao];
            
            Animal *test1=[[Cat alloc]init];
            [test1 jiao];
            
            id test2=[[Dog  alloc]init];
            [test2  eat];
            
            id test3=[[Weishi alloc]init];
            [test3 feed:test2];
        
        }
        return 0;
    }

    最后得到下面的。

    当然这基本是最简单了。

  • 相关阅读:
    洛谷 1195 口袋的天空
    洛谷1955 程序自动分析
    【洛谷3295】[SCOI2016]萌萌哒
    洛谷2024 食物链
    八数码问题
    Codeforces Round #442 (Div. 2)
    Oracle 中truncate与delete的区别
    git命令提交步骤和解决冲突的
    git 更新代码到本地
    12、Python中的包
  • 原文地址:https://www.cnblogs.com/fume/p/5230331.html
Copyright © 2011-2022 走看看