1.方法的重载
发生在同类中,方法的名相同、参数列表不相同;
为了方便方法的调用,编译器编译时根据参数不同自动匹配对应方法;
//Student.java
package oo.day6;
public class Student {
public void sayHi(){
System.out.println("无参方法");
}
public void sayHi(String info){
System.out.println("有参方法");
System.out.println(info);
}
}
package oo.day6;
public class Test {
public static void main(String[] args) {
Student s = new Student();
s.sayHi();
s.sayHi("额外输出");
}
}
//无参方法
//有参方法
//额外输出
2.方法的重写
发生在超类和派生类之间,方法名相同、参数列表相同;
当超类中方法不能满足需求时,在派生类中改写超类方法;
package oo.day6;
public class Person {
public void sayHi(){
System.out.println("hi");
}
}
package oo.day6;
public class Student extends Person {
public void sayHi(){
System.out.println("派生类hi");
}
}
package oo.day6;
public class Test {
public static void main(String[] args) {
Student s = new Student();
s.sayHi();
}
}
//派生类hi
3.派生类中方法重载
package oo.day6;
public class Person {
public void sayHi(){
System.out.println("hi");
}
}
package oo.day6;
public class Student extends Person {
public void sayHi(String info){
System.out.println("派生类hi");
System.out.println(info);
}
}
package oo.day6;
public class Test {
public static void main(String[] args) {
Student s = new Student();
s.sayHi(); //hi
s.sayHi("额外输出");
//派生类hi
//额外输出
}
}
此时派生类Student中是自动包含了超类中sayHi()方法的,再添加一个sayHi(String info)方法,
则发生了方法的重载。