(原創) 為什麼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致歉。

posted on 2007-07-16 23:51  真 OO无双  阅读(2315)  评论(9编辑  收藏  举报

导航