(原創) 為什麼VB有Dim obj As Foo = New Foo()這種語法? (初級) (Visual BASIC)
Abstract
以前在寫VB/VBScript時,一直不了解為什麼VB提供兩套New語法,Dim obj As New Foo()和Dim obj As Foo = New Foo(),尤其後者,重複兩次class name,這麼長的語法,覺得很累贅,所以都是用前者,今天才發現,原來後者是為了支援Polymorphism(多型/多態)而用。
Introduction
學了Design Pattern之後,GoF的第一句真言是Programming to an Interface,not to an Implementation. (針對介面(接口)而寫,不要針對實作而寫)
所以在ISO C++,會很習慣的這樣寫
Interface* foo = new Foo;
C#
Interface foo = new Foo();
但在VB,就得用第二種寫法才能達成
Dim foo As Interface = New Foo()
原來以前是因為不懂polymorphism(多型/多態),不會用interface,誤會了VB,以此文向VB致歉。