アクセス解析 - コンストラクタとメソッドの違い
ホームページ制作業者への見積もり&比較が簡単に出来る!Neutrals×ホームページ制作ガイド
。ため、コンストラクタは、この多くの初心者のための混乱は、多くの特別な方法を提供することができます。しかし、コンストラクタとメソッドは、多くの重要な違いがあります。
著者:元の駅のロバートニールセン:www.javaworld.com
。(注:類推のような外国人が、私は翻訳によるとされます)。カモノハシを理解するには、まず、摂食の違いをそれと他の動物を理解する必要があります。同様に、コンストラクタを理解するために、それらは、コンストラクタとメソッドの違いを理解するだろう。すべての人々が認定試験をしたい方、特にJavaを学ぶには、コンストラクタを理解することが重要です。。
。このプロセスは、オブジェクトを作成するときに使用することができます:カモノハシのp1 =新しいカモノハシ();
それどころか、このメソッドはJavaコードの役割は、実装することです。
修飾子、戻り値と名前を別の
。とメソッドは、コンストラクタは、任意のアクセス修飾子を持つことができます:(多くの場合、パッケージと友好の呼び出し)、保護されたパブリック、プライベート、あるいはまったく変更方法と異なる場合は、コンストラクタの性質へのアクセスを持つことができない以下の非は修飾:抽象、 、ネイティブ、静的、最終的または同期。
戻り値の型は非常にも重要である。メソッドは、値または戻り値なし(void)を任意の型を返すことが可能、コンストラクタは戻り値を持つ、無効にする必要はありません。。
最後に、2つのネーミングの話。。。。
"この"使用方法
コンストラクタとメソッドキーワードを使用して、これはかなり異なっている。基準点の方法は、このメソッドの実装では、クラスのインスタンスである。。コンストラクタが、同じクラス、異なるパラメータのコンストラクタの別のリストにこの時点で、我々は、次のコードを見て:
public class Platypus {
String name;
Platypus(String input) {
name = input;
}
Platypus() {
this("John/Mary Doe");
}
public static void main(String args[]) {
Platypus p1 = new Platypus("digger");
Platypus p2 = new Platypus();
}
}
上記のコードでは、2つの別のコンストラクタのパラメータリストがある。最初のコンストラクタは、名前のクラスのメンバーは、番目のコンストラクタに割り当て、"ジョン/ Mary Doeさん"の初期値を持つメンバ変数名に、最初のコンストラクタを呼び出します。
コンストラクタでは、あなたが、これは、その後、最初の行に配置する必要がありますキーワードを使用する場合はされていない場合、コンパイルエラーになります。
の使い方の"スーパー"
コンストラクタとメソッドは、キーワードスーパースーパークラスの両方にポイントではなく、使用される方法と同じ。。次の例:
class Mammal {
void getBirthInfo() {
System.out.println("born alive.");
}
}
class Platypus extends Mammal {
void getBirthInfo() {
System.out.println("hatch from eggs");
System.out.print("a mammal normally is ");
super.getBirthInfo();
}
}
上記の例では、super.getBirthInfo(の使用)は、スーパークラスは、哺乳類のメソッドをオーバーロードされた電話があった。
コンストラクタは、スーパークラスのコンストラクタを呼び出すためにスーパーを使用。。次の例:
public class SuperClassDemo {
SuperClassDemo() {}
}
class Child extends SuperClassDemo {
Child() {
super();
}
}
上記の例ではない実用的な意義があり、コンストラクタのお子様はsuper()をが含まれている、それがSuperClassDemoがインスタンス化、ビングは、子供のクラスに追加されたスーパークラスのコンストラクタの役割です。。
コンパイラは、自動的にコードを追加します
コンパイラは、自動的にこのコンストラクタにコードを追加して、Javaプログラマは、初心者を混同されることがある。} publicクラスの例{:私たちはコンストラクタがないクラスを記述する場合、コンパイル時に、コンパイラは自動的に、例えば、引数なしのコンストラクタを追加します。
次のコードをコンパイルします:
public class Example {
Example() {}
}
public class TestConstructors {
TestConstructors() {}
}
次のように、コンパイラは、コードを追加します:
public class TestConstructors {
TestConstructors() {
super;
}
}
、ちょっと考えて、次のコードを知っている
public class Example {}
コードは、このようなコンパイラによって追加されます後:
public class Example {
Example() {
super;
}
}
コンストラクタは継承できません。。スーパークラスのサブクラスすることができますのいずれかの方法を継承。次のコードを検討してください:
public class Example {
public void sayHi {
system.out.println("Hi");
}
Example() {}
}
public class SubClass extends Example {
}
クラスサブクラスは、自動的に親クラスのsayHiメソッドを継承するが、親クラスのコンストラクタの例()は継承されない。