オブジェクト指向言語の比較
キーワード比較表

| 　 | C++ | Java | C# | Visual Basic(> NET) | Delphi言語 | JavaScript |
| --- | --- | --- | --- | --- | --- | --- |
| クラスの宣言 | class、struct | class | class | Class | class | prototype |
| あらゆるスコープからの参照許可 | public | public | public | Public | public,published | N/A |
| 同一パッケージ (アセンブリ) 内部からの参照許可 | N/A | (無指定がデフォルト) | internal | Friend | (同一ユニット内に記述) | N/A |
| クラス外部からの参照不許可 | private | private | private | Private | private | N/A |
| サブクラス以外からの参照不許可 | protected | protected | protected | Protected | protected | N/A |
| 継承関係の無いクラスのプライベートメンバ参照許可 | friend | N/A | プライベートアクセサか、リフレクションを使用 | プライベートアクセサか、リフレクションを使用 | (同一ユニット内に記述) | N/A |
| クラスの各インスタンスで共有されるメンバ | static | static | static | Shared | class | N/A |
| 新規オブジェクトの作成 | new | new | new | New、CreateObject() | class.create | new |
| 値を返さない関数(メソッド) | void 関数名(){} | void メソッド名(){} | void メソッド名(){} | Sub プロシージャ名() | procedure | N/A |
| 関数(メソッド)のオーバーロード(多重定義) | N/A(デフォルト) | N/A(デフォルト) | N/A(デフォルト) | Overloads | overload | N/A(デフォルト) |
| 自分自身のオブジェクトへの参照 | this | this | this | Me | self | this |
| コンストラクタの宣言 | クラス名(){} | クラス名(){} | クラス名(){} | Sub New() End Sub | constructor | function プロトタイプ名(){} |
| オブジェクト破棄時処理の宣言 | ~クラス名() {} | finalize() {} | Dispose(){}, ~クラス名() {} | Sub Dispose() End Sub, Sub Finalize() End Sub | destructor | N/A |
| スーパークラスの参照 | スーパークラス名 | super | base | MyBase | inherited | N/A |
| インタフェースの宣言 | N/A | interface | interface | Interface | interface | N/A |
| 実装されるインタフェースの指定 | N/A | implements | : | Implements | . | N/A |
| 抽象クラスの宣言 | N/A | abstract | abstract | MustInherit | abstract | N/A |
| 継承不可クラスの宣言 | N/A | final | sealed | NotInheritable | sealed | N/A |
| スーパークラスからのクラスの派生 | : | extends | : | Inherits | =class(superclass) | N/A |
| メソッドのオーバーライド | N/A | @Override(任意, Java SE 5から) | override | Overrides | override | N/A |
| サブクラスにて実装を強制する関数(メソッド)の宣言 | = 0 | abstract | abstract | MustOverride | abstract | N/A |
| オーバーライド不可関数(メソッド)の宣言 | N/A(デフォルト) | final | sealed | NotOverridable | final |  |
| オーバーライド可能関数(メソッド)の宣言 | virtual | N/A(デフォルト) | virtual | Overridable | virtual,dynamic |  |
| サブクラスにおけるスーパークラスのメンバの隠蔽 | N/A | N/A(デフォルト) | new | Shadows | N/A | N/A |
| クラスメソッドへの型安全な参照の宣言 | N/A | N/A | delegate | Delegate | N/A | N/A |
| 列挙型の宣言 | enum | enum (Java SE 5から, java.lang.Enumのサブクラス扱い) | enum | Enum、End Enum | typename=(enm1,enm2,...) | N/A |
| アノテーション・属性の宣言 | N/A | @interface アノテーション名 (java.lang.Annotationのサブインタフェース扱い) | class 属性名 : Attribute | <AttributeUsage(AttributeTargets.All)>Class 属性名:Inherits Attribute、End Class | N/A | N/A |

| アノテーション・属性の使用 | N/A | @アノテーション名(変数名1=値1,変数名2=値2...) | [属性名1(変数名1=値1,変数名2=値2...),属性名2(...)...] | <属性名1(引数1,引数2,...,変数名1:=値1,変数名2:=値2...),属性名2(...)...> | N/A | N/A |
| ジェネリック型・テンプレート | 型名<パラメータ1,パラメータ2...> | クラス名<パラメータ1,パラメータ2...> | 型名<パラメータ1,パラメータ2...> | 型名(Of パラメータ1,パラメータ2...) | N/A | N/A |
| ジェネリック型パラメータ制約 | N/A | クラス名< パラメータ1 extends パラメータ1のスーパークラス叉はスーパーインタフェース, パラメータ2...> 叉は クラス名< パラメータ1 super パラメータ1のサブクラスまたはサブインタフェース, パラメータ2...> | where パラメータ1 : パラメータ1のスーパークラス, パラメータ1のスーパーインタフェース where パラメータ2... | (Of T As {New,Class,Structure,インターフェイス名,クラス名}, U As {・・・}) | N/A | N/A |
| ジェネリック型パラメータのワイルドカード指定 | N/A | クラス名<?, ?, ?, ...> | N/A | N/A | N/A | N/A |