オブジェクト指向言語の比較

出典: フリー百科事典『ウィキペディア(Wikipedia)』

オブジェクト指向言語の比較(オブジェクトしこうげんごのひかく)の記事では、C++JavaC#Visual Basic(.NET)Delphi言語JavaScriptの各言語について、オブジェクト指向プログラミングに関係することや全く関係しないことについて、「キーワード比較表」として(「キーワード」については、「予約語」の記事を参照)比較する。

キーワード比較表[編集]

  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

外部リンク[編集]