美文网首页
oc 基础继承

oc 基础继承

作者: xq9527 | 来源:发表于2021-03-23 19:41 被阅读0次

定义父类

  • 我们在父类的.h文件中申明了3个属性sex age name 和三个方法
//
//  Animal.h
//  inherit
//
//  Created by xuqing on 2021/3/22.
//
#import <Foundation/Foundation.h>
NS_ASSUME_NONNULL_BEGIN
@interface Animal : NSObject{
    @public
    NSString * _sex;
    NSUInteger _age;
    NSString* _name;
}
@property(nonatomic, copy)NSString * name;
- (instancetype)initWithsex:(NSString * )sex age:(NSUInteger)age;
-(void)eat;
-(void)bark;
@end
NS_ASSUME_NONNULL_END
  • 然后我们在 .m文件中实现这三个方法
//
//  Animal.m
//  inherit
//
//  Created by xuqing on 2021/3/22.
//
#import "Animal.h"
@implementation Animal
- (instancetype)initWithsex:(NSString * )sex age:(NSUInteger)age{
    self=[super init];
    if(self){
        _sex=sex;
        _age=age;
    }
    return  self;
}
-(void)eat{
 
}
-(void)bark{

}
@end
  • 分别创建dog 和cat 子类
  • dog 类

.h 文件申明

//
//  Dog.h
//  inherit
//
//  Created by xuqing on 2021/3/22.
//

#import "Animal.h"

NS_ASSUME_NONNULL_BEGIN

@interface Dog : Animal

@end

NS_ASSUME_NONNULL_END

.m文件实现

//
//  Dog.m
//  inherit
//
//  Created by xuqing on 2021/3/22.
//

#import "Dog.h"
@implementation Dog
- (void)eat{
    NSLog(@"eat bone");
}

@end
  • cat类

.h文件申明

 //
//  Cat.h
//  inherit
//
//  Created by xuqing on 2021/3/22.
//
#import "Animal.h"
NS_ASSUME_NONNULL_BEGIN
@interface Cat : Animal
@end
NS_ASSUME_NONNULL_END

.m文件实现

 //
//  Cat.m
//  inherit
//
//  Created by xuqing on 2021/3/22.
//
#import "Cat.h"
@implementation Cat
- (void)eat{
    NSLog(@"eat food");
   
}
- (NSString *)description{
    return [NSString stringWithFormat:@"sex =%@ , age=%zd", _sex,_age];
}
@end

具体实例化调用

//
//  main.m
//  inherit
//
//  Created by xuqing on 2021/3/18.
//

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

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        // insert code here...
        NSLog(@"Hello, World!");
        
        Animal *animal=[[Animal alloc]initWithsex:@"male" age:1];
        [animal eat];
        
        Dog * dog =[[Dog alloc]initWithsex:@"Female" age:5];
        dog.name=@"tom";
    
        [dog eat];
    
        animal= [[Cat alloc]initWithsex:@"Male" age:10];
        animal.name=@"Kitty";
        [animal eat];

        NSLog(@"%@",animal);

    }
    return 0;
   
}

日志分析


通过观察日志 我们看到 子类实现了父类的对象指针也是可以的 然后调用子类重写父类的方法 也是可以的
此文记录学习用

相关文章

  • oc 基础继承

    定义父类 我们在父类的.h文件中申明了3个属性sex age name 和三个方法 然后我们在 .m文件中实...

  • 面试问题总结

    第一部分:OC基础 1.oc有多重继承吗?没有的话用什么代替 cocoa中所有的类都继承自NSObject,多继承...

  • OC基础(四)——继承

    继承 遇到的问题.多个类具有相同的成员.a. 复制 粘贴.-> 代码冗余.-> 后期的维护不方便.b.使用继承. ...

  • oc 继承 swift 类

    oc 继承 swift 类 项目中使用 oc 继承 swift 类编译器报错: oc 继承前增加 objc_sub...

  • Objective-C(简称OC)

    OC基础知识: OC继承了C语言的所有特点。 @ 表示C语言没有 OC所增加的 每次拿内存之后,要查看是否申请到内...

  • iOS 知识清单总结

    iOS 知识清单总结2017年7月24日 周一 一、oc基础 1、oc特点;2、分类与继承(或说扩展)的区别;3、...

  • OC Swift文件混编

    一.Swift 类可以继承 OC 类,OC 类不能继承 Swift 类。 二.Swift 和 OC 混编 三.两个...

  • OC 继承

    新建一个 Student 类继承于 Person 类

  • 1.6 继承

    本小节知识点: 继承基本概念 OC中的继承关系 OC中如何实现继承 1.继承基本概念 现实生活中的继承 交通工具类...

  • IOS面试相关

    OC有多继承吗?没有的话用什么代替? OC中没有多继承,可以用委托代理Protocol来实现。 如果有多继承 “:...

网友评论

      本文标题:oc 基础继承

      本文链接:https://www.haomeiwen.com/subject/afrzcltx.html