方法的重载(overload):
概念
在一个类中,定义的多个名字相同,但是参数列表不同的方法
方法重载的要求:
① 方法名相同
② 形参列表不同(形参的个数、顺序、类型)
③ 方法的返回值、修饰符、异常没有要求
注意:只是形参名字不同,不能构成方法的重载
使用
根据调用者传递的实际参数,进行匹配对应的方法。
注意:方法的重载应用时,会根据方法调用时指定的实际参数, 先精确匹配,不能精确匹配时,再就近向上匹配。 就近向上不能匹配成功时,编译报错。 避免出现混淆调用的现象。
作用
让一个对象的同类方法,由于参数表的不同造成的差异,对用户屏蔽!
举例
class Student{
String name; //姓名
int age; //年龄
double score; //成绩
// 定义方法sayHello
public void sayHello(){
System.out.println("我叫"+name+"今年"+age+"岁,考了:"+score+"分");
}
// 定义方法sayHello:被罚,自我介绍 n遍,n外界传递
public void sayHello(int n){
//循环n遍
for(int i=1;i<=n;i++){
System.out.println("我叫"+name+"今年"+age+"岁,考了:"+score);
}
}
// 定义方法sayHello:你好 n,很高兴认识你. n数据由外界传递
public void sayHello(String n){
System.out.println("你好"+n+",很高兴认识你,我叫"+name);
}
}
方法的覆盖(override)
方法的覆盖(也称为方法重写)
子类中定义和父类相同的方法。
子类用特殊的方法实现替换掉父类继承给它的一般的方法实现
方法覆盖的要求
子类的方法名、形参列表、返回值类型和父类相同
子类的访问修饰符和父类相同或是比父类更宽
使用
通过子类型引用调用方法,如果调用的方法子类覆盖了父类中的方法,则优先使用子类覆盖的方法。
注意事项
如果子类定义了方法名、形参列表和父类相同;但是返回值和父类不同,不能构成方法的覆盖,编译报错。
如果子类定义方法名相同、但是形参列表不同的方法,编译通过,运行也通过,此语法是方法的重载。
覆盖的应用场景
父类中提供的方法,不足以满足子类的功能需求时,子类可以根据自身功能重写此方法。
public class TestAnimal2{
public static void main(String[] args){
//创建Dog对象
Dog d = new Dog();
//调用吃方法 ======打印狗吃骨头
d.eat();
//调用睡方法=====打印动物睡6小时
d.sleep();
//调用叫方法=====打印狗叫汪汪汪
d.shout();
}
}
// 父类 动物
class Animal{
String name; //名字
int age; //年龄
//定义吃方法
public void eat(){
System.out.println("动物会吃...");
}
//定义睡方法
public void sleep(){
System.out.println("动物睡6小时...");
}
}
//子类 Dog 继承 父类
class Dog extends Animal {
//狗会叫 定义一个叫方法
public void shout(){
System.out.println("狗叫汪汪汪...");
}
public void eat(){
System.out.println("狗吃骨头...");
}
}
overload和override的区别
overload
- 方法名相同
- 形参列表不同(数据类型、个数、顺序)
- 访问修饰、返回值类型、异常没关系
override
- 子类的方法名、形参列表、返回值类型和父类相同
- 子类的访问修饰符和父类相同或是比父类更宽
本文详细解析了方法重载(overload)和方法覆盖(override)的概念与使用,包括两者之间的区别,以及如何在实际编程中正确应用。通过具体示例,帮助读者理解方法的重载与覆盖在类中的实现方式。
1181

被折叠的 条评论
为什么被折叠?



