看一个小例子
public class Base {
public void showMessage()
{
System.out.println("this is Base");
}
}
public class A extends Base {
public void showMessage()
{
System.out.println("this is A");
}
}
public class B extends Base {
public void showMessage()
{
System.out.println("this is B");
}
}
可以看到每一字继承Base类的子类如果都需要showMessage这个函数,但是却每个都重写了一遍这个函数,无疑就是代码冗余
可以这样改:
public class Base {
public static void showMessage(Object obj)
{
if(obj instanceof A)
{
System.out.println("this is A");
}
if(obj instanceof B)
{
System.out.println("this is B");
}
}
}
public class A extends Base {
}
public class B extends Base {
public static void main(String[] args)
{
B b=new B();
A a=new A();
Base.showMessage(a);
Base.showMessage(b);
}
}
运行结果: