1.重载(overload)方法
对重载方法的调用主要看静态类型,静态类型是什么类型,就调用什么类型的参数方法。
2.重写(override)方法
对重写方法的调用主要看实际类型。实际类型如果实现了该方法则直接调用该方法,如果没有实现,则在继承关系中从低到高搜索有无实现。
package com.design.fenpai;
class Father {
public void printClass() {
System.out.println("调用父类方法");
System.out.println(this.getClass().getName());
}
}
class Child extends Father {
public void printClass() {
System.out.println("调用子类方法");
System.out.println(this.getClass().getName());
}
}
public class Test {
public void print(Father p) {
System.out.println("重载使用的是静态类型");
p.printClass();
}
public void print(Child p) {
p.printClass();
}
public static void main(String[] args) {
Father f = new Father();
Father c = new Child();
Test t = new Test();
t.print(f);
t.print(c);
}
}
总结一句话:重载看静态,重写看动态