首页
学习
活动
专区
工具
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

python继承

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

1.4K30
  • 窥探Swift之类继承访问权限

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

    1.5K50

    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.4K00

    承上启下角色——继承

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

    75330

    继承

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

    91920

    Python继承、多层继承和多继承

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

    5.3K30

    继承

    继承 实验目的:掌握继承、抽象定义和使用、对象向上转型。 实验内容:已知若干图形,求以该图形为底锥体体积。 实验要求:用面向抽象思想实现。...,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,然后调用函数输出圆锥体积。

    74730

    继承

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

    78510

    继承问题

    要点一 首先确定好确定好哪个作为父,哪个作为子类,同时要让父所有能够进行继承属性前加上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+父细节。

    9110

    Python继承

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

    1.2K10

    与对象,继承,派生,组合,多态

    面向对象编程 1.与对象 在python先有再有对象,和对象,你可以看成,是把对象相同特征和相同方法汇总再一起,再根据来生成对象,这个对象具有特征与方法 1.命名 class 名...且__init__在运行时候他会调用函数 pass def func():#func为方法.其在命名对象时候不会进行调用 pass 调用 对象 = 名(...用.把对于值取出来再进行赋值修改,或者直接生成一个同名对象把原来覆盖掉 2.继承 1.父,子类 继承是一种新建方式,新建称为子类,被继承称为父 2.继承写法 class fu...) #from fu 3.查找顺序 #先查找对象他本身,如果没有,再去里面找,如果还没就去父本身找,在去父找,以此类推.直到没有会报错 #菱形继承除外 3.派生 在父和子类基础上,...super()会得到一个特殊对象,该对象就是专门用来访问父属性(按照继承关系) super().

    1.1K10
    领券