TEDIA会員に登録したメールアドレスとパスワードを入力してください

メールアドレス:

     パスワード:


パスワードを忘れた方はパスワードの確認を行ってください。

TEDIA会員へのご登録がお済みで無い方はこちらで登録ができます


>> テクノロジーポータル TEDIA トップページへ戻る <<

mark Software Developer's Think IT mark 失敗しないソフト選び Find-IT mark テクノロジーポータル TEDIA

会員登録 登録情報管理

TEDIA SponsorsOpen Source Web Development Tutorials - Dev Shed

徹底比較!Java vs. C/C++:クラス、コマンドライン
(2008/11/11公開)

JavaとC/C++の構文の比較

 この記事は、JavaとC/C++の構文比較に関する2回の記事の後半です。前回の記事をまだ読んでいない場合は、今回の記事よりも先に読むことをお勧めします。前回の記事は、「徹底比較!Java vs. C/C++」というタイトルで、このサイトにあります。前回の記事には、今回の記事を理解するための基礎となる内容が記載されています。

 前回の記事では、データ型、クラス、そのほかいくつかの重要な点について、2つの言語の意味論的な相違点を紹介しました。今回は、クラス、コマンドライン引数、制御の無条件移転(goto、label、break、continue)、そのほかのトピックについて、より包括的に解説します。

 また、今回の記事の終わりでは、C/C++に存在してJavaに欠けている機能や、その逆の機能について紹介します。最後に、全体の総括を行います。2つの言語のうちどちらかが優れているという比較は行いませんが、これら2つの言語に関する個人的な意見を述べます。

 では早速はじめましょう!

クラス



 前回の記事で、クラスはJavaでもっとも重要な概念の1つと説明しました。これは、Javaのすべての要素はクラスの一部であることが要求されるためです。C/C++ではこのような条件はありません。C/C++でもクラスは非常に重要ですが、必須ではありません。Javaではクラスは必須で、すべての動作はクラスに関連して発生します。

 グローバル関数の作成やグローバル変数の使用が必要な場合、それらのすべてをクラス内に収める必要があります。このためには、静的なメソッドと静的なデータを作成し、最終的にそれらをクラスの中に配置します。もちろん、複数のクラスに含めることも可能です。さらに、スーパークラス(祖先)と呼ばれるObjectクラスを持つ、膨大な数のクラスが存在することにも注目する必要があります。

 また、Javaには多数のアクセス修飾子が存在し、クラス、コンストラクタ、メソッドなどに実装することができます。これらはそれぞれ、どの対象に実装が可能であるかに応じて専用のルールが存在します。例えば、メソッドを宣言するときには、privatepublicprotectedの3つの修飾子のうち1つだけを使用できます。また、abstractまたはnativeとして修飾されたメソッドには本体がありません。

 アクセス修飾子についての最後の注意点は、修飾子は継承(inheritance)と干渉しないように防止されていることです。その一方で、サブクラス内のどの部分が参照可能で、どの部分が参照可能でないかには影響します。継承に関するほかの重要な相違点は、Javaでは複数の継承が許可されないことです。その代わりにインターフェース(interface)という構造が存在します。これはクラスではありませんが、基本クラス(スーパークラス)から継承が可能です。

 ただし、複数の継承の代わりとして複数のインターフェースを実装することができます。インターフェースは、抽象メソッド以外に何も含まないクラスです。このため、インターフェースの本体は継承されたクラスで定義する必要があります。


1    2    3    4    次のページ

Copyright © 2008 Ziff Davis Enterprise, Inc.
Originally appearing in the U.S. Edition of Dev Shed. All Rights Reserved.