重载在面向对象编程中是一个很重要的概念,它允许用户通过不同类型不同数量的参数创造不同的实例。在Java中,重载是通过使用同名不同参的方法名实现的。如
public class Person{
private String name;
private Date birthday, deathday
public Person(String name,Date birthday, Date deathday){
this.name = name;
this.birthday = birthday;
this.deathday = deathday;}
}
pubic Person(String name, Date birthday){
this.name = name;
this.birthday = birthday;
}
在创建一个“人”的实例时,使用第一个constructor我们需要输入姓名生日和祭日,然而一个“人”可能还没有死因此还没有祭日,此时我们我们创建实例时,就必须使用第二个constructor,which只需要输入姓名与生日。
在这里Person类中只有三个类变量,其中一个是可选项。因此我们只需要两个constructor就可以完美的定义这个类。然而当一个类设计更多的可选变量时,就需要创建更多的constructor来完善这个类的定义。这就会造成代码的冗余。
在Python中,重载是通过在函数中定义含有默认值的参数实现的
class Person:
def __init__(self, name, birthday, deathday = None):
self.name = name
self.birthday = birthday
self.deathday = deathday
通过对可选性的参数设置默认值只需要一个__init__函数就可以将涵盖所有可能的构建方法