一个关于java多态的问题
java对多态处理得很好,但是有时候不能达到我的要求。比如:
一个方法,如果参数类型是Father,那么我们可以传入一个Father实例,或者它的一个子类实例,做不同的操作。
现在我想传入一个子类的实例,但是想完成传父类实例所作的操作,应该怎么样做?
下面是一个例子,将打印出:
I am Father
I am Son
如何能打印出
I am Father
I am Father(还是传入一个子类的实例)
//Father.java
public class Father{
public void draw(){
System.out.println("I am Father");
}
}
//Son.java
public class Son extends Father{
public void draw(){
System.out.println("I am Son");
}
}
//MainTest.java
public class MainTest{
public void test(Father a){
a.draw();
}
public static void main(String[] args){
Father father=new father();
Son son=new Son();
MainTest m=new MainTest();
m.test(father);
m.test(son);
}
}
有人说java的late binding机制从根本上限制了java不能完成这样的需要,是么?