虛函數是有代碼的並明確容許子類去覆蓋,但子類也可不覆蓋,就是說能夠直接用,不用重寫 抽象函數是沒有代碼,子類繼承後必定要重寫函數
在一個類中用虛函數: 是由於在超類中的有實際代碼的方法,但明確容許子類能夠做重寫 並且當子類重寫後,能夠用子類實例超類;若是這樣,超類變量調用虛函數時,執行的是子類的方法 在一個類中用抽象函數 是在寫超類時不肯定函數的代碼,讓子類去實現 抽象函數沒有方法體。繼承
簡單來講虛函數(Virtual)已經包含了也必須包含默認的實現,因此在派生類中能夠從新實現也能夠不實現這些虛函數。 抽象函數(abstract)沒有提供默認實現,因此在派生類中必須實現這些抽象函數。 接口中的函數相似於抽象函數,也不提供默認實現,實現接口的類也必須實現這些函數。 但接口可用於多繼承,即,類只能從一個類繼承,但可同時實現多個接口。接口