python 重载和重写的"区别"

重载和重写,这是两个新概念,是两个令我们容易混淆的概念。

1.重载(overloading method)

是在一个类里面,方法名字相同,而参数不同。返回类型呢?可以相同也可以不同。重载是让类以统一的方式处理不同类型数据的一种手段。

函数重载主要是为了解决两个问题。1.可变参数类型。2.可变参数个数。

另外,一个基本的设计原则是,仅仅当两个函数除了参数类型和参数个数不同以外,其功能是完全相同的,此时才使用函数重载,如果两个函数的功能其实不同,那么不应当使用重载,而应当使用一个名字不同的函数。

好吧,那么对于情况 1 ,函数功能相同,但是参数类型不同,python 如何处理?答案是根本不需要处理,因为 python 可以接受任何类型的参数,如果函数的功能相同,那么不同的参数类型在 python 中很可能是相同的代码,没有必要做成两个不同函数。

那么对于情况 2 ,函数功能相同,但参数个数不同,python 如何处理?大家知道,答案就是缺省参数。对那些缺少的参数设定为缺省参数即可解决问题。因为你假设函数功能相同,那么那些缺少的参数终归是需要用的。

好了,鉴于情况 1 跟 情况 2 都有了解决方案,python 自然就不需要函数重载了。

2.方法重写(overiding method)

子类不想原封不动地继承父类的方法,而是想作一定的修改,这就需要采用方法的重写。方法重写又称方法覆盖
时间: 2024-10-29 10:46:24

python 重载和重写的"区别"的相关文章

重载和重写的区别(详细)

ava中重载与重写的区别 首先我们来讲讲:重载(Overloading) (1) 方法重载是让类以统一的方式处理不同类型数据的一种手段.多个同名函数同时存在,具有不同的参数个数/类型. 重载Overloading是一个类中多态性的一种表现. (2) Java的方法重载,就是在类中可以创建多个方法,它们具有相同的名字,但具有不同的参数和不同的定义. 调用方法时通过传递给它们的不同参数个数和参数类型来决定具体使用哪个方法, 这就是多态性. (3) 重载的时候,方法名要一样,但是参数类型和个数不一样,

java基础疑难点总结之成员变量的继承,方法重载与重写的区别,多态与动态绑定

1.成员变量的继承 1.1要点 子类用extends关键字继承父类.子类中可以提供新的方法覆盖父类中的方法.子类中的方法不能直接访问父类中的私有域,子类可以用super关键字调用父类中的方法.在子类中可以增加域,增加方法或者覆盖超类的方法,然而绝对不能删除继承的任何域和方法. 在一个子类被创建的时候,首先会在内存中创建一个父类对象,然后在父类对象外部放上子类独有的属性,两者合起来形成一个子类的对象.所以所谓的继承使子类拥有父类所有的属性和方法其实可以这样理解,子类对象确实拥有父类对象中所有的属性

重载和重写的区别

java中重载与重写的区别 首先我们来讲讲:重载(Overloading) (1) 方法重载是让类以统一的方式处理不同类型数据的一种手段.多个同名函数同时存在,具有不同的参数个数/类型. 重载Overloading是一个类中多态性的一种表现. (2) Java的方法重载,就是在类中可以创建多个方法,它们具有相同的名字,但具有不同的参数和不同的定义. 调用方法时通过传递给它们的不同参数个数和参数类型来决定具体使用哪个方法, 这就是多态性. (3) 重载的时候,方法名要一样,但是参数类型和个数不一样

Java的重载和重写的区别

今天做题一脸蒙:原以为理解的挺深的,看来不仅要学会,换药灵活运用.以下是搜集整理的重载和重写的区别: 1.首先是书写:重载英文为overload  ,重写为 override . 2.然后是定义: (1)重载的定义是:方法名相同,参数类型不同或参数个数不同或参数顺序不同,就可以构成重载.这里注意没有规定方法返回值和修饰符,防止陷阱奥. (2)重写(又叫覆盖或复写):方法名相同,返回值类型相同,参数列表相同.  这里注意没有规定修饰符奥. 3.权限:   重载对权限没有要求: 重写的权限是:被子类

【面试题】方法的重载与重写的区别?

方法的重写(override orverwrite) vs 重载(overload) [面试题]方法的重载与重写的区别? 重载:"两同一不同":同一个类,同一个方法名,不同的参数列表. 注:方法的重载与方法的返回值无关! >构造器是可以重载的 重写:(前提:在继承的基础之上,子类在获取了父类的结构以后,可以对父类中同名的方法进行"重构") 方法的返回值,方法名,形参列表形同:权限修饰符不小于父类的同名方法:子类方法的异常类型不大于父类的: 两个方法要同为sta

【JAVA】重载和重写的区别

重写(Overriding) 重写规则 1. 参数列表:必须与被重写方法的参数列表完全匹配.  2. 返回类型:必须与超类中被重写的方法中声明的返回类型或子类型完全相同  3. 访问级别:一定不能比被重写方法强,可以比被重写方法的弱.  4. 非检查异常:重写方法可以抛出任何非检查的异常,无论被重写方法是否声明了该异常.  5. 检查异常:重写方法一定不能抛出新的检查异常,或比被重写方法声明的检查异常更广的检查异常  6. 不能重写标志为final,static的方法 其中: 1. 父类与子类之

java中方法的重载与重写的区别

JAVA中方法的重载与重写 1)  方法的的参数上看:重载后的方法与源方法在参数的类型以参数列表的顺序上会发生改变,而重写后的方法在参数的数据类型与参数列表的顺序不会发生改变 2)原方法是否对被覆盖:重载后的方法不会覆盖原方法,而重写后的方法会覆盖父类中的方法,调用时也只会调用重写后的方法. 3)调用方法的对象上:重载后的方法被调用时,调用对象不同时,调用的方法不同,产生的结果也不同:而重写后的方法被调用时,无论调用的对象是父类或者子类的对象,调用的方法相同,产生的结果也一样

java中重载和重写的区别

重载和重写的英文名字: 重载overload. 重写override. 其实把重载和重写放到一起比较本身没有太大的意义.因为: (1)重载主要发生在同一个类的多个同名方法之间 (2)重写发生在子类和父类的同名方法之间. 他们除了方法名相同之外,没有太大相似之处. 此外,子类和父类之间也会发生重载.如果子类定义了一个与父类相同名字的方法,但是参数列表不同的方法,那么就会形成子类方法和父类方法的重载.

重载和重写的区别与联系

这三个概念都是与Java中的多态有关系的.如果单是区别重载与覆盖这两个概念是比较容易的,但是隐藏这一概念却使问题变得有点复杂了, 下面说说它们的区别吧.        重载是指不同的函数使用相同的函数名,但是函数的参数个数或类型不同.调用的时候根据函数的参数来区别不同的函数. 覆盖(也叫重写)是指在派生类中重新对基类中的虚函数(注意是虚函数)重新实现.即函数名和参数都一样,只是函数的实现体不一样. 隐藏是指派生类中的函数把基类中相同名字的函数屏蔽掉了.隐藏与另外两个概念表面上看来很像,很难区分,