前言
方法的重写和重载是 Java 多态性的不同表现。重写是父类与子类之间多态性的一种表现,重载是一个类中多态性的一种表现。
一、重载
如果在一个类中定义了多个同名的方法,它们或有不同的参数个数或有不同的参数类型,
则称为方法的重载。
对于同一个num函数方法:
(1) 方法名一定相同
(2)参数个数一定不一样、类型可能不一样
(3)访问修饰符和返回值类型可以相同也可以不同
简单来说:重载就是对于不同的情况写不同的方法。 比如,同一个类中,写不同的构造函数用于初始化不同的参数。
二、重写
如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写。
College子类中:
(1)方法名必须相同,返回值类型必须相同
(2)参数类型必须相同
(3)访问权限不能比父类中被重写的方法的访问权限更低
比如在第一个num函数里面:
// 一个num方法 (计算两个整数之和)
public Integer num(Integer a, Integer b){
return a + b;
}
子类对该类中的返回结果为两整数之和不满意,他说他要两整数之和,那么我们可以在子类中重写满足于自己要求的方法(两整数之商)。如下
public class College extends Student{
public Integer num(Integer a, Integer b){
// 重写满足于自己的方法
return a / b;
}
}
测试:
public class Fun{
public static void main(String[] args) {
// 获取对象
College college = new College();
Integer num = college.num(4, 2);
System.out.println(String.format("result:%s",num));
}
}
控制台输出:(结果并不是两数之和4,而是两数之商2)
result:2
简单而言:就是具体的实现类对于父类的该方法实现不满意,需要自己在写一个满足于自己要求的方法。
最后
如果你觉得DT_小白文章写的还不错,请微信搜索并关注「 Java云社 」微信公众号,和DT_小白一起学习Java、分布式、微服务、大数据技术,并且「 Java云社 」收集了大量的大厂面试题目集,等你来挖掘,为了提升自己的能力,实现技术能力的飞跃,每天定时更新超硬核技术干货,我在「 Java云社 」等您的加入,让我们共同学习吧!