当前位置: 首页 > 面试题库 >

Swift-必须由子类覆盖的类方法

杨骁
2023-03-14
问题内容

是否有一种标准方法可以在Swift中制作“纯虚函数”,即。一个 必须 由每个子类中被覆盖,并且,如果不是的话,将导致编译时错误?


问题答案:

您有两种选择:

将超类定义为协议而不是类

Pro :编译时检查每个“子类”(不是实际的子类)是否实现了所需的方法

缺点 :“超类”(协议)无法实现方法或属性

2.声明该方法的超级版本

例:

class SuperClass {
    func someFunc() {
        fatalError("Must Override")
    }
}

class Subclass : SuperClass {
    override func someFunc() {
    }
}

Pro :可以在超类中实现方法和属性

缺点 :不检查编译时间



 类似资料:
  • 问题内容: 我正在尝试在JBoss 5.1.0的WAR应用程序中部署一些Web服务。 我已经使用JAX-WS工具从现有的wsdl中创建了源文件。这创建了服务文件和带注释的@XmlType的小包,它们将充当请求和响应包装器。 此类在JBoss 4.2.3上运行良好,但是当移至JBoss 5.1.0时,出现此异常。 java.lang.UnsupportedOperationException:set

  • 我正在制作一个定制的盔甲,在我的盔甲课程中我得到了这个错误: ArmorE类型的方法getArmorTexture(ItemStack,Entity,int,int)必须重写或实现超类型方法 为什么我会犯这个错误? 这是我的代码: 装甲等级: 主类的一部分:

  • 问题内容: 假设我在Java类中有一个方法,并且我不希望该类的任何子类能够覆盖该方法。我可以那样做吗? 问题答案: 您可以将方法声明为,如: 有关更多信息,请参见http://docs.oracle.com/javase/tutorial/java/IandI/final.html

  • 这是一个更大的项目,所以我将简化结构,不包括这里涉及的所有代码,但我想知道这在概念上是否可行,以及我可能遇到的潜在障碍。 我从主类中得到了几个级别的子类,其中一个级别包含方法age()(从顶部超类重写),该方法调用useEnergy()。此类的直接子类重写age()。该类的直接子类需要重写useEnergy(),但被重写方法中的代码永远不会执行(通过System.out.printlns验证)。有

  • 问题内容: 在Objective-C中,您可以将类型定义为给定类并实现协议: 这将表明返回的值是实现给定协议的值。有没有办法在Swift中执行类似的操作? 问题答案: 您可以这样做: 这定义了一个函数,该函数返回类型为“SomeType”和协议“SomeProtocol”的对象,并返回符合这些条件的对象。

  • 我有一个实现可比较接口的类A,和一个扩展A的类B。我需要找到一种方法来覆盖类B中的。 我发现了一个类似的问题不能用可比的父子孙继承并试图实施提供的解决方案 A类: B类: 例外情况: 线程“main”java中出现异常。lang.ClassCastException:T4级。A不能转换为T4级。B(T4.A和T4.B在加载器“app”的未命名模块中)