一.什么是重写(Override)
重写就是子类对父类中的非私有化的方法进行重新编写,除了方法体不一样之外,方法的名字,返回值类型,参数等全部一样。就像下面这段代码 Son类继承了Father类,所以我们就可以重写父类中的eat()方法,由于我们和上一辈所处的时代不同,吃的不一样了,所以父类中eat()方法就满足不了我们的需求了,所以我们就需要重写父类中的方法了来满足我们的需求。
class Father {
public void eat() {
System.out.println("父亲那一辈吃窝窝头...");
}
}
class Son extends Father {
@Override
public void eat() {
System.out.println("我们吃白面馒头...");
}
}
二.为什么要使用重写
重写的目的主要是子类继承父类中的成员方法的需求无法满足在子类中的需求,例如有一个父类Animal,他有一个eat()方法,他又有两个子类,一个Dog类和一个Cat类,但是两个子类和父类之间吃的并不一样,而且两个子类之间吃的也不一样,这时父类中的eat()方法就无法满足两个子类的需求,所以子类就可以通过重写父类方法的形式来实现自己的需求。
class Animal {
//父类中的方法
public void eat() {
System.out.println("不同的动物吃的不一样");
}
}
class Dog extends Animal{
//Dog类中重写父类中的eat()方法
@Override
public void eat() {
System.out.println("狗喜欢吃骨头");
}
}
class Cat extends Animal{
//Cat类中重写父类中的eat()方法
@Override
public void eat() {
System.out.println("猫喜欢吃鱼");
}
}
三.重写的优点
重写的优点显而易见。不同子类通过重写父类中的方法可以实现不同的功能,满足自己特有的需求。
四.重写的局限性
1. 重写的必要条件就是两个类之间必须具备继承关系。
2.并且重写的方法必须是父类中非私有化的方法。
3.重写的方法除了方法体不一样(即实现的需求不一样),其他都一样。
4.必须要在子类中重写。
五.什么是重载
重载就是在同一个类中,方法名一样,但参数列表不一样 (返回值可以不一样),这就是方法的重载。
//参数类型String
public void test(String str) {
}
//参数类型int
public void test(int num) {
}
六.重载的作用
最直接的作用就是方便程序员可以根据不同的参数类型、顺序个数自动匹配方法。
七.重载的局限性
1.想要使用重载必须在同一个类中。
2.重载的方法名字必须一致。
3.重载的参数列表不能一样。
4.返回值可以不一样。
5.类的有参构造方法和无参构造方法就是一种重载。