方法重载(Overloading)
概念:
方法重载就是在同一个类中,可以定义多个方法,它们的名字相同,但参数列表不同。参数列表不同可以是参数的类型不同、数量不同或者顺序不同。
实现方法:
- 在同一个类中定义多个方法,方法名相同,但参数不同。
- 返回类型可以相同也可以不同,但仅靠返回类型不同是不行的,必须有参数列表的变化。
适用场景:
- 当你希望对同一操作提供不同的输入方式时,比如一个计算面积的方法可以接受一个参数(边长)来计算正方形面积,也可以接受两个参数(长和宽)来计算矩形面积。
例子:
想象你是一个厨师,你有一个叫“做饭”的方法。你可以选择“做饭”的方式,比如煮面条只需要面条和水,而煮汤可能需要水、蔬菜和肉。虽然都是“做饭”,但具体需要的材料不同。
方法重写(Overriding)
概念:
方法重写是指在子类中重新定义从父类继承的方法。重写的方法在子类中有相同的名字、参数列表和返回类型。
实现方法:
- 子类继承父类,然后在子类中定义一个与父类方法同名、同参数列表的方法。
- 子类方法的返回类型可以是父类方法返回类型的子类型。
- 子类方法的访问权限不能比父类方法更严格。如果父类方法是public,子类方法也必须是public。
适用场景:
- 当你希望子类能够根据自己的需求,提供父类方法的不同实现时。比如动物类有一个“叫声”方法,狗子类可以重写这个方法来实现“汪汪汪”。
例子:
想象你是一个音乐老师,教学生如何演奏乐器。你有一个方法叫“演奏”,每个学生(子类)都可以根据自己的乐器(钢琴、小提琴等)来重写“演奏”方法,发出不同的声音。
总结一下,方法重载是在同一个类中,用相同的方法名但不同的参数来实现不同的功能;而方法重写是在子类中,修改继承自父类的方法的实现。
