1. 程式人生 > >面試題-------多型的理解

面試題-------多型的理解

多型的理解

在面嚮物件語言中,介面的多種不同的實現方式即為多型。 引用Charlie Calverts對多型的描述——多型性是允許你將父物件設定成為一個或更多的他的子物件相等的技術,賦值之後,父物件就可以根據當前賦值給它的子物件的特性以不同的方式運作(摘自“Delphi4 程式設計技術內幕”)。

多型的三要素:繼承 重寫 父類引用指向子類物件

Java中,父類的引用既可以指向父類的物件,也可以指向子類的物件。但子類的引用不能指向父類的物件。

public interface Parent//父類介面
{
    public void simpleCall();
}
public class Child_A implements Parent
{
    public void simpleCall();
    {
    //具體的實現細節;
    }
}
 
public class Child_B implements Parent
{
    public void simpleCall();
    {
    //具體的實現細節;
    }
}

然後,我們就可以看到多型所展示的特性了: Parent pa = new Child_A(); pa.simpleCall()則顯然是呼叫Child_A的方法; Parent pa = new Child_B(); pa.simpleCall()則是在呼叫Child_B的方法。 所以,我們對於抽象的父類或者介面給出了我們的具體實現後,pa 可以完全不用管實現的細節,只訪問我們定義的方法,就可以了。

事實上,這就是多型所起的作用,可以實現控制反轉。這在大量的J2EE輕量級框架中被用到,比如Spring的依賴注入機制。