重载 VS 重写
重载:函数或方法名相同,参数不同,这样同名不同参的函数或方法
重写:重写指的是在Java的子类与父类中有两个名称、参数列表都相同的方法的情况。由于他们具有相同的方法签名,所以子类中的新方法将覆盖父类中原有的方法。
经典图例:
写一个重写的样例:
1、创建一个Person类,包含两个属性
public class Person {
String name;
int age;
public Person(){};
public Person(String name,int age){
this.name = name;
this.age = age;
}
public void eat(){
System.out.println("吃饭");
}
public void walk(int distance){
System.out.println("走路的距离是:" + distance + "公里");
}
}
2、创建 一个子类Students,继承父类Person,并且重写eat方法
import javax.sound.midi.Soundbank;
public class Students extends Person {
String major;
public Students(){};
public Students(String major){
this.major = major;
}
public void study(){
System.out.println("学习专业是:" + major);
}
//对父类的方法进行重写
public void eat(){
System.out.println("吃有营养的东西");
}
}
注:我用的IDEA会提示重写方法,出现标识提示,点击向上的箭头可到父类方法
3、写个测试用例来测试一下
public class PersonTest {//简单测试
public static void main(String[] args) {
Students st = new Students();
st.eat();
st.walk(10);
st.study();
}
}
结果如下:
因为子类重写了父类的eat方法,所以调用时覆盖了父类原有的方法