首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

继承类中func()类的奇怪歧义[Swift]

在Swift中,继承类中func()类的奇怪歧义是指在继承关系中,子类和父类拥有相同的函数名,但是参数类型或参数个数不同,导致在调用函数时出现歧义的情况。

这种歧义主要是由于Swift的函数重载机制引起的。函数重载是指在同一个作用域内,可以定义多个同名但参数类型或参数个数不同的函数。当调用函数时,编译器会根据参数的类型和个数来确定具体调用哪个函数。

在继承关系中,子类可以重写父类的函数,即子类可以定义一个与父类同名的函数。然而,如果子类的函数与父类的函数在参数类型或参数个数上有所不同,就会导致歧义。

为了解决这种歧义,Swift引入了重写规则。根据重写规则,子类在重写父类的函数时,必须保持函数名、参数类型和返回类型完全一致。如果子类的函数与父类的函数在参数类型或参数个数上有所不同,那么子类的函数将被视为一个全新的函数,而不是对父类函数的重写。

这种奇怪的歧义可以通过在子类中使用override关键字来解决。当子类的函数与父类的函数在参数类型或参数个数上有所不同时,可以在子类的函数前面加上override关键字,明确表示子类的函数是对父类函数的重写。

以下是一个示例代码:

代码语言:txt
复制
class ParentClass {
    func funcName() {
        print("父类的函数")
    }
}

class ChildClass: ParentClass {
    override func funcName() {
        print("子类的函数")
    }
}

let obj = ChildClass()
obj.funcName() // 输出 "子类的函数"

在上述示例中,ChildClass继承自ParentClass,并重写了父类的funcName()函数。通过使用override关键字,明确表示子类的funcName()函数是对父类函数的重写。

总结起来,继承类中func()类的奇怪歧义是指在继承关系中,子类和父类拥有相同的函数名,但是参数类型或参数个数不同,为了解决这种歧义,可以在子类中使用override关键字来明确表示子类的函数是对父类函数的重写。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

python中类的继承和类代码块

---- 本节知识视频教程 一、类代码块 在定义类的时候,使用了冒号: 而这个冒号在python中的表示一个代码块的开始。 代码块的读取默认是从上到下的,类代码块中的代码同样是从上到下读取的。...二、类的继承 继承:子类可以继承父类的方法和属性。...继承的代码定义方式: Class 父类名称: 父类成员 Class 子类名称(父类名称):#这里体现了继承的定义 子类成员 注意:子类继承父类后,我们可以直接实例化子类,那么父类中的属性和方法都可以被子类调用...类继承的好处: 1.可以提取类的公共特性。 2.容易理解类之间的关系。 3.使得代码更加简化,更能表示现实事物对象以及关系。 4.如果子类继承的父类还有继承关系,那么将继承所有的父类的方法。...三、总结强调 1.类代码块,可以通过类的实例化就可以输出类中代码的效果,主要理解代码块的读取顺序。 2.类的继承。掌握类继承的定义以及类的调用方法,继承了哪些。

1.8K20

窥探Swift之类的继承与类的访问权限

上一篇博客《窥探Swift之别具一格的Struct和Class》的博客可谓是给Swift中的类开了个头。关于类的内容还有很多,今天就来搞一下类中的继承以及类的访问权限。...说到类的继承,接触过面向对象编程(OOP)的小伙伴并不陌生,继承就是OOP编程中几大特征之一,所以还是有必要把类的继承拎出来聊聊的。说到访问权限,这个在OOP编程中也是不可或缺的。...下方将会给出类的继承的一些示例,通过这些事例来认识一下Swift中的继承。   1. 父类的创建     这里我们创建一个名为Father的父类,他类可以继承Father类。...在Swift中也是有final关键字的,被final关键字所修饰的类是不能用来继承的。我们可以把Father类定义成final类型,并观察Children发生的变化。...二、访问权限     Swift中的访问权限与其他面向对象编程语言有所不同,虽然Swift中的访问权限也分为3个等级,但是每个等级所能访问的区域与其他编程语言相比还是有些区别的。

1.5K50
  • python中类的多继承

    ---- 本节知识视频教程 一、多继承 类似于c++中某个类,一次可以继承多个父类,所有被继承的这些父类的方法和属性都将可以被子类使用。...如果某个类的方法与继承的父级中有相同的方法名称,那么我们的结果就是以这个子类的方法名称作为最终的 方法。 二、查看父类和属性继承规则 1.如何查看继承的多个父级类是哪些?...可以通过子类的__bases__ (注意这里有两个下划线) 2.Python中属性的继承规则呢? 通过测试,我们知道属性的继承规则和方法的继承规则是一样的。...三、总结强调 1.掌握多继承类的定义 2.掌握查看多继承类的魔法属性 3.掌握多继承类的调用规则 4.掌握属性的继承规则 相关文章: python应用场景有哪些?岗位工资如何?...入手一门编程语言,一起初识Python html中的起到什么作用?前端面试经常考到 python中类和对象 python中函数递归VS循环

    1.4K30

    TS中的类的继承以及抽象类

    前言 上篇文章中,我们介绍了TS中的类和修饰符,这篇我们继续了解TS中的类相关的两个东西,分别是类的继承以及抽象类 类的继承 我们知道js中有继承,最开始js是使用函数来模拟实现类的,一直到ES6出现...事实上,继承的好处在于,可以更好的重用代码,以及后期更好的维护代码 TS中的继承ES6中的类的继承极其相识,子类可以通过extends关键字继承一个类 例如: class Person{ name:...(); } } 复制代码 如上,B继承A,那B被称为父类(超类),A被称为子类(派生类) 子类实例是可以继承父类所有的public和protected的属性和方法 除了继承,面向对象还有一个特征:多态...js和ts中多态其实很常见,可以理解为多种状态,比如代码在运行时才能决定具体执行哪个函数 抽象类 抽象就是指不具体的,所以抽象类就是指不具体的类。...抽象类规定了所有继承自它的非抽象子类必须实现它的所规定的功能和相关操作,否则会报错 class B extends A{ constructor(){ super(); } fn(

    1.5K00

    类中承上启下的角色——继承

    基类private成员在派生类中无论以什么方式继承都是不可见的。这里的不可见是指基类的私 有成员还是被继承到了派生类对象中,但是语法上限制派生类对象不管在类里面还是类外面都不能去访问它。 2....基类private成员在派生类中是不能被访问,如果基类成员不想在类外直接被访问,但需要在 派生类中能访问,就定义为protected。可以看出保护成员限定符是因继承才出现的。 3....(在子类成员函数中,可以使用 基类::基类成员 显示访问) 3. 需要注意的是如果是成员函数的隐藏,只需要函数名相同就构成隐藏。 4. 注意在实际中在继承体系里面最好不要定义同名的成员。...i) { A::fun(); cout func(int i)->" <<i<<endl; } }; void Test() { B b; b.fun(10); }; 四、派生类的默认成员函数...术语“白箱”是相对可视性而言:在继承方式中,基类的内部细节对子类可见 。继承一定程度破坏了基类的封装,基类的改变,对派生类有很大的影响。派生类和基类间的依赖关系很强,耦合度高。

    75730

    类的继承

    本文讲述JavaScript中类继承的实现方式,并比较实现方式的差异。 一、何为继承 继承,是子类继承父类的特征和行为,使得子类对象具有父类的实例域和方法。 继承是面向对象编程中,不可或缺的一部分。...如果修改父类代码,将影响所有继承于它的子类 影响性能 子类继承于父类的数据成员,有些是没有使用价值的。...但是,在实例化的时候,已经分配了内存。所以,在一定程度上影响程序性能。 二、例子 例子以图书馆中的书入库归类为例。 以下是简化后的父类Book(也可称为基类)。...目的是通过继承该父类,产出Computer(计算机)子类。 并且,子类拥有新方法say,输出自己的书名。...七、ES6继承 最后,看下现代版ES6的类继承。不禁感慨以前的刀耕火种,是多么折磨人?

    92420

    Python中类的继承、多层继承和多继承

    Python中,一个类可以通过继承的方式来获得父类中的非私有属性和非私有方法。...一、继承、重写、和调用重写的父类方法 继承的语法为在类名后的小括号()中写入要继承的父类名,如果要继承多个类则中间用逗号分隔。...4.如果在子类重写父类的方法中,需要使用父类同名方法中的功能,在父类功能基础上做扩展,则子类可以在重写的方法中调用父类被重写的方法,使用super()来调用。 ? 二、类的多层继承 类可以多层继承。...Mi类对象可以使用Phone中的方法和属性,也可以使用Electrical中的方法和属性,如果Phone重写了Electrical的方法,则继承的是Phone中的方法。...同一个类可以继承多个类,如上面的HuaWei类同时继承了Phone和Computer两个类。这时,两个父类中的方法和属性子类都可以使用,两个父类的父类中的属性和方法也可以使用。

    5.4K30

    类的继承

    什么是继承 继承是一种新建类的方式,新建的类称为子类,被继承的类称为父类 继承的特性是:子类会遗传父类的属性 继承是类与类之间的关系 ?...类 在Python2中如果一个类没有继承任何类,不会继承object类 print(Parent1....__bases__) (,) 类的分类(了解) 后面会详细解释类的分类,目前仅做了解 新式类 继承了object的类以及该类的子类,都是新式类 Python3中所有的类都是新式类...经典类 没有继承object的类以及该类的子类,都是经典类 只有Python2中才有经典类 继承与抽象 继承描述的是子类与父类之间的关系,是一种什么是什么的关系。...抽象只是分析和设计的过程中,一个动作或者说一种技巧,通过抽象可以得到类,如下图所示: ?

    78610

    类的继承

    类的继承 实验目的:掌握类的继承、抽象类的定义和使用、对象的向上转型。 实验内容:已知若干图形,求以该图形为底的锥体的体积。 实验要求:用面向抽象的思想实现。...,getArea将圆的面积算法单独作为一个类(Circle.java),便于代码的复用; } } Centrun这个类为核心类,在之后的代码编写中可以不做更改,getVolume函数用来求椎体的体积,...return Math.PI*this.r*this.r; //代码的重写,求圆的面积,公式为:S=π*r^2 } } Circle是对抽象类shape的继承(记得导入shape包),在Circle...类中,利用对getArea函数代码的重写操作,具体实现了求圆的面积这一操作。...5、创建一个包Test,对以上三个包中的代码进行具体实现,代码如下: 导入myshape包,在main函数中通过向上转型,实例化shape包中的抽象类Shape,然后调用函数输出圆锥的体积。

    75130

    类继承的问题

    要点一 首先确定好确定好哪个类作为父类,哪个类作为子类,同时要让父类所有能够进行继承的属性前加上public public class Shape { Shape(){} public void S()...{} public void L(){}} 要点二 子类需要在首行最外层类名后加上extends + 父类名 public class Circle extends Shape{·····} 要点三...在子类添加属性,要加上需要继承的父类的属性并且super(继承属性) BeiJingPeople(String name,int age,String sex,String sno){ super(name...,age,sex); this.sno = sno;} 结语 继承属于Java编程语言最基础的东西,是需要我们不断练习,其中还具有许多的细节都需要注意,其中我认为最容易忘记的细节就是在子类中继承父类时...,子类名的后面加上extends+父类名的细节。

    9310

    Python类的继承

    类的继承可以看成对类的属性和方法的重用,能够大大的减少代码量,继承是一种创建新类的方式,在python中,新建的类可以继承一个或多个父类,也就是说在python中支持一个儿子继承多个爹。...通过继承创建的新类为子类或者派生类,被继承的类称为基类、父类或超类 1、子类会继承父类所有的功能属性和方法,并且子类能够拥有自己的属性和方法;对原来的父类不会产生任何影响。...单继承中只有一个父类,而多继承中有多个父类 2、调用属性和方法时,优先调用子类的,子类没有再调用父类的,当子类的属性和方法与父类的属性和方法名称重复时,以子类的属性和方法为准。...,再找继承写在前面的父类的属性和方法 class A(object): pass class B(A): name='B类name' def func(self):...): pass test=D() print(test.name) test.func() C类name C类func Process finished with exit code 0 前面继承类没找到

    1.2K10

    继承类的方法

    1 问题 定义一个父类,用子类去继承父类所拥有的方法、定义属性,然后使用测试文件实现子类输出父类的方法信息,属性等。...2 方法 2.1 定义一个名为Person的父类: 2.2 定义一个名为Student的子类,并令其继承父类: 2.3 定义父类的属性、方法: 2.4定义子类的属性,以及输出父类的属性: 2.5...Student lisi = new Student("李四",18,"165465465",54654,"四川旅游学院"); lisi.fanhui(); }} 3 结语 针对于继承类以及类中的方法和属性...,首先应该创建父类和子类的继承,然后是定义类属性和方法,最后输出返回它的内容。...单单从目前来继承类属于比较基础的方法,之后还会在此基础上实现更多延伸,例如分块利用,比所有代码写在一起更加方便,整洁。

    18110
    领券