zoukankan      html  css  js  c++  java
  • oc-20-多态

    /**
     为什么父类可以访问子类继承自父类的方法,但是无法访问子类独有的方法?
     1.编译器编译时:
       编译器在编译时,只检查指针变量的类型,确定该指针变量类型里面有下面调用的方法,如果有该方法,编译器就认为,是正确,可以编译通过.
     
     2.运行时:会动态监测对象的真实类型.然后,调用对象自己的方法.
     父类指针指向子类对象的这种形式,叫做多态.
     当父类想要访问子类特有的方法时:强制类型转换.
     */
    #import <Foundation/Foundation.h>
    #import "Cat.h"
    #import "Girl.h"
    #import "Dog.h"
    #import "Mouse.h"
    
    int main(int argc, const char * argv[]) {
        @autoreleasepool {
            Animal *c = [Cat new];
            [(Cat *)c jump];
            
            Animal *a = [Animal new];//错误
            [(Cat *)a jump];
    
        }
        return 0;
    }
    
    // 多态的应用
    void test1()
    {
    // 父类指针指向子类对象,编译的时候是左边Animal类型运行的时候是右边Cat类型。
            Animal *c1 = [Cat new];
    
    // 1.父类能否调用子类继承自父类的方法
            [c1 eat];
        
    // 2.父类能否调用子类独有的方法,强制类型转换.
    //        [c1 jump];
    }
  • 相关阅读:
    css圆,背景,img填满等样式
    MySQL双日志
    MySQL分层和查询数据的流程
    ZJNU 2345
    ZJNU 2342
    ZJNU 2340/2341/2343
    ZJNU 2235
    ZJNU 2226
    ZJNU 2212
    ZJNU 2208
  • 原文地址:https://www.cnblogs.com/yaowen/p/5310652.html
Copyright © 2011-2022 走看看