美文网首页
iOS中实现Java中抽象类不能直接实例化的办法

iOS中实现Java中抽象类不能直接实例化的办法

作者: DevWin | 来源:发表于2018-01-13 16:43 被阅读0次

我们模拟一个抽象类: People,下面是.h文件

#import <Foundation/Foundation.h>
//抽象类,不能直接实例化,需要子类继承才能初始化
@interface People : NSObject
//抽象方法,不能直接调用,需要子类重写方法
- (id)doSomething:(id)arg;

@end

下面是.m文件

#import "People.h"

@implementation People

- (instancetype)init {
    //禁止调用People类的实例方法
    if([self isMemberOfClass:[People class]]){
        //doesNotRecognizeSelector:告诉系统某个方法没有实现,并且抛出异常
        //也就是说子类必须要重写init方法才行
        //_cmd在Objective-C的方法中表示当前方法的selector,这里就是表示init方法
        [self doesNotRecognizeSelector:_cmd];
        return nil;
    }else{
        self = [super init];
        if(self){
            
        }
        return self;
    }
}

- (id)doSomething:(id)arg
{
    NSLog(@"%@",NSStringFromSelector(_cmd));
    //_cmd,这里就表示doSomething:方法
    //子类必须重写doSomething:方法,否则会crash
    [self doesNotRecognizeSelector:_cmd];
    return nil;
}

@end

相关文章

  • iOS中实现Java中抽象类不能直接实例化的办法

    我们模拟一个抽象类: People,下面是.h文件 下面是.m文件

  • 关于Android(JAVA)实例化接口假象的讨论

    关于Android(JAVA)实例化接口假象的讨论 我们都知道,java中抽象类和接口都是不能实例化的,但是,在写...

  • JAVA抽象类与接口的区别

    抽象类和接口都不能直接实例化,如果要实例化,抽象类变量必须指向实现所有抽象方法的子类对象,接口变量必须指向实现所有...

  • Java中抽象类也能实例化

    在Java中抽象类真的不能实例化么? 在学习的过程中,发现了一个问题,抽象类在没有实现所有的抽象方法前是不可以通过...

  • 抽象类和接口的同异

    相同点:1、都不能被实例化。2、接口的实现类和抽象类的子类只有全部实现了接口或者抽象类中的方法后才可以被实例化。不...

  • Java抽象类概念

    Java中对象是类的具象化,某些类不具备实例化的意义,因此使用抽象类限制实例化。 抽象类: 创建抽象类的时候需要添...

  • Scala学习笔记(五) 抽象类以及类中的一些语法糖

    1. 抽象类 Scala 的抽象类跟Java的一样,不能被实例化。 1.1抽象字段 抽象类中,变量不使用就无需初始...

  • 一阶段day17-01抽象类和抽象方法

    1、抽象类 抽象类:只能被继承不能实例化(不能创建对象)。抽象方法:声明的时候不用实现,在子类中必须去重写的方法。...

  • java接口与抽象类学习

    1.什么是抽象类 特点整理: 抽象类,不能被实例化,非抽象的类的子类,可以实例化; 抽象类中不能含有抽象方法,但是...

  • Day17-pygame

    一、抽象类和抽象方法 抽象类:只能被继承不能实例化(不能创建对象) 抽象方法:声明的时候不用实现,在子类中必须去重...

网友评论

      本文标题:iOS中实现Java中抽象类不能直接实例化的办法

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