重载(overLoad)与重写(override)的区别与详解(详解+对比+代码示例)

时间:2025-03-14 16:56:41

文章目录

        • 1.1 方法重写和重载的区别
        • 2.1 方法重载(OverLoad)
          • 2.1.1方法重载使用细节:
        • 2.2 方法重写/覆盖(override)
          • 2.2.1方法重写使用细节:

1.1 方法重写和重载的区别

????请看表格对比

名称 发生范围 方法名 形参列表 返回类型 修饰符
重载(overload) 本类 必须一样 类型、个数、顺序至少有一个不同 无要求 无要求
重写(override) 父子类 必须一样 相同 子类重写的方法,返回类型和父类一样或者是父类的子类 子类方法不能缩小父类方法的访问范围

????????????如果你基础比较好,面向对象思想掌握的比较扎实,那你应该已经看懂了吧;
????????????如果还有疑问,请看下面更加详细的知识点和代码示例吧。

✈️✈️✈️

2.1 方法重载(OverLoad)

相同的方法名字,参数列表不同,调用也就不同
例如(以下四个方法均构成重载):

//1号方法
public sum (int a,int b){
	return a + b;
}
//2号方法
public sum (int a,int b,int c){
	return a + b + c;
}
//3号方法
public sum (int a,int c,int b,){
	return a + b + c;
}
//4号方法
public sum (int a,double c,int b,){
	return a + b + c;
}
2.1.1方法重载使用细节:
  1. 方法名:必须相同。
  2. 形参列表:必须不同(形参类型&&个数&&顺序,至少有一样不同,参数名无要求)。
  3. 返回值无要求。(3号方法返回值类型为int;4号方法返回值为double)
  4. 在调用sum()方法时,根据参数列表来自己匹配合适的方法。

✈️✈️✈️

2.2 方法重写/覆盖(override)

发生在继承中,子类有一个方法,和父类的某个方法名称、返回类型、参数一样,即子类方法重写了父类方法

2.2.1方法重写使用细节:
  1. 子类的方法的参数、方法名称要和父类完全一样
  2. 子类的方法返回类型和父类一样或者是父类返回类型的子类(例如:父类为Object子类为String)
  3. 子类方法不能缩小父类方法的访问权限。
//Dog父类
class Dog{
public feed(){
	 System.out.print("喜欢吃骨头");
}
//Teddy(泰迪)子类
}
class Teddy extends Dog{
public feed(){
	 System.out.print("喜欢吃面条");
}
}

主类中实例化一个泰迪

Teddy wangwang = new Teddy;
wangwang.feed();//

以上有两个feed方法,因为子类Teddy类中的feed()重写了父类Dog中的feed(),所以这里输出的就是“喜欢吃面条”。
以上就是重载与重写的区别与详细描述了!

????????????肯定有人问:我的泰迪有时候喜欢吃面条,也有时候吃骨头,那我能不能让Teddy(泰迪)类也调用父类中的feed()方法呢?
????????????敬请期待下节的多态中的向上转型与向下转型