2012-02-29 8 views
3

私は初めでJavaを学習中にこの出くわしたが、私はトップダウン勉強、私はいくつかの方向たい:比較的早い段階でJavaサブルーチンはいつメソッドではありませんか?

これはJava tutorialにあったが:

一つとして、最終的な一般的なJavaのサブルーチンはしばしばメソッドと呼ばれることに注意してください。一般に、「メソッド」という用語は、クラスまたはオブジェクトに含まれるサブルーチンを意味します。これはJavaのすべてのサブルーチンに当てはまるので、Javaのすべてのサブルーチンはメソッドです(1つの非常に技術的な例外があります)。他のプログラミング言語でも同じことは言えません。それにもかかわらず、「メソッド」という用語は、オブジェクト指向プログラミングの文脈で使用されています。第5章で実際のオブジェクト指向プログラミングを開始するまでは、より一般的な用語「サブルーチン」を使用することをお勧めします。しかし、私はいくつかの人々が最初から "メソッド"という用語を使用することを好むことに注意する必要があります。

私の質問はそれが何であるかである「1つの非常に技術的な例外です。」私は複数のスタック技術を学んでいるので、彼が言及しているこの特定の例外を知りたいと思います。このチュートリアルの内容は次のとおりです。 http://math.hws.edu/javanotes/c2/

+0

質問タイトルをさらに便利に編集できますか? 「どのようなJavaサブルーチンはメソッドではないのですか?私はそれが実際に質問されていると信じています。 – Dev

+0

は、 –

答えて

6

コンストラクタサブルーチンですが、彼らは特別な タイプのサブルーチンです。オブジェクトには が属していないため、確かにインスタンスメソッドではありません。彼らはオブジェクトを作成する責任があるので、オブジェクトが作成される前には が存在します。それらはスタティック メンバサブルーチンのようなものですが、静的でないと宣言することはできません。 staticです。実際には、Java言語仕様によると、彼ら は技術的には全くクラスのメンバーではありません!特に、 のコンストラクタは、「方法」と呼ばれるではないである。

+1

Funnily十分なコンストラクタはバイトコードでインスタンスメソッドとして表示されるフィードバックに感謝を完了します。 (オブジェクトの割り当ては、 'new'を使用してコードに分けられます。これにより、派生クラスのコンストラクタによって同じコードが呼び出されます)。 –

2

クラスconstructorsはメソッドではありません。あなたがにリンクされているチュートリアルのchapter 5から引用

関連する問題