zoukankan      html  css  js  c++  java
  • oc继承

    继承:子类 父类 单继承
    如果需要在自己创建的类或者系统提供的类当中添加某一属性或者方法,只需继承这个类即可;

    @interface Person : NSObject{
        @private//不允许外部访问 子类无法继承
        int age;
        @public//外部允许访问 子类可以继承
        NSString *address;
        @protected//不允许外部访问 子类可以继承
        NSString *name;
    }

    继承的方法的执行路径:先在子类中寻找,如果没有再依次往上查找,直到最上层,如果还没有找到 那就会报错 那么这个方法可能不存在或者没有实现

    Children 继承于 Person

    #import "Person.h"
    
    @implementation Person
    -(void)test1{
        NSLog(@"我在父类中");
    }
    @end
    #import "Children.h"
    
    @implementation Children
    
    -(void)test2{
        NSLog(@"%@ %@ ",name,address);
    }
    //继承的寻找路径自下而上
    -(void)test1{
        NSLog(@"我在子类中");
    }
    @end
    #import "Park.h"
    
    @implementation Park
    -(void)play:(Person *)people{
        NSLog(@"我在公园玩");
        
    }
    @end

    继承子类可以自动的向上转换 子类向父类转换

    #import <Foundation/Foundation.h>
    #import "Person.h"
    #import "Children.h"
    #import "Park.h"
    int main(int argc, const char * argv[]) {
        @autoreleasepool {
           
            Person *xiaowang=[Person new];
            Children *xiaoming=[Children new];
            Park *park = [Park new];
            
            [xiaowang test1];//输出:我在父类中
            [xiaoming test1];//输出:我在子类中
            [park play:xiaoming];//原类为Person 但是Children 继承它之后也能用,即向上转换 也仅能向上转换
            //输出:我在公园玩
        }
        return 0;
    }


  • 相关阅读:
    linux strace 命令详解
    Redis执行Lua脚本示例
    getconf
    rc.sysinit 解析
    Linux系统启动内幕
    syslinux 和 grub
    isolinux.cfg 文件是干什么的
    C++中构造函数调用构造函数
    static和extern的作用域--题目
    构造函数与析构函数不能被继承
  • 原文地址:https://www.cnblogs.com/kinghyt/p/10397924.html
Copyright © 2011-2022 走看看