面向對象設計的結果既可以用面向對象語言、也可以用非面向對象語言實現。
使用面向對象語言時,由于語言本身充分支持面向對象概念的實現,因此,編譯程序可以自動把面向對象概念映射到目標程序中。
使用非面向對象語言編寫面向對象程序,則必須由程序員自己把面向對象概念映射到目標程序中。
例如,C語言并不直接支持類或對象的概念,程序員只能在結構(struct)中定義變量和相應的函數(事實上,不能直接在結構中定義函數而是要利用指針間接定義)。
所有非面向對象語言都不支持一般-特殊結構的實現,使用這類語言編程時要么完全回避繼承的概念,要么在聲明特殊化類時,把對一般化類的引用嵌套在它里面。
從原理上說,使用任何一種通用語言都可以實現面向對象概念。當然,使用面向對象語言,實現面向對象概念,遠比使用非面向對象語言方便,但是,方便性也并不是決定選擇何種語言的關鍵因素。選擇編程語言的關鍵因素,是語言的一致的表達能力、可重用性及可維護性。從面向對象觀點看來,能夠更完整、更準確地表達問題域語義的面向對象語言的語法是非常重要的。