Today: Yesterday: Total: Online:
カテゴリー
その他
  • RSS1.0
  • RSS2.0
  • atom0.3
  • valid XHTML1.0
  • valid CSS2
  • Credit
RSSリーダーで購読する | この日記のはてなブックマーク数 | プロフィール
コメントが一番多い記事(233コメント):人の心理の裏をかくホームページ集客術:リピータになってもらうためには
ツイートが一番多い記事(94ツイート):ちょっと待て!twitterやfacebookに子供の写真を掲載する親達への警告
いいねが一番多い記事(574いいね):facebookスパムに要注意。なりすましの見分け方とアカウント乗っ取りの手口(2013年度版)

カテゴリー » JAVA February 03, 2011

暗黙的スーパーコントラクター ID:1296710274


サブクラスのコンストラクタは、その処理の最初でスーパークラスのコンストラクタを呼び出す。
スーパークラスのコンストラクタが複数ある場合、「どのスーパークラスのコンストラクタを呼ぶか」、
つまりどの引数のコンストラクタを呼ぶのか指定しないといけない。

しかし、一つだけスーパークラスのコンストラクタを省略できる場合があり、
スーパークラスの引数なしのコンストラクタ、つまり「super();」を呼ぶ場合
このコンストラクタを呼び出す場合に限り、スーパークラスのコンストラクタの呼び出しを省略できる。


スーパークラスの暗黙的コンストラクタ呼び出しは、
引数のないコンストラクタを呼び出すので、
引数を持つコンストラクタだけしか
定義していない場合はコンパイルエラーとなる。

class Oya {
Oya(String str) {
System.out.println("My name is " + str + "!");
}
}
class Ko extends Oya {//Oyaを継承
Ko() {
// 暗示的に Oya() が呼び出される
System.out.println("I am Ko!");
}
}
class Main {
public static void main(String[] args) {
Ko obj = new Ko();
}
}


上記の場合、コンパイルエラーとなり
class Oya {
Oya(String str) {
System.out.println("My name is " + str + "!");
}
}
class Ko extends Oya {
Ko() {
super("sugai"); // 明示的スーパークラスコンストラクタ呼び出し
System.out.println("I am Ko!");
}
}
class Main {
public static void main(String[] args) {
Ko obj = new Ko();
}
}
スーパークラスのコンストラクタは super() で明示的に参照できるので、
上記のように行うとコンパイルエラーはなくなり、
実行結果として
My name is sugai!
I am Ko!
と出力される。


http://oshiete.goo.ne.jp/qa/2855972.html
http://msugai.fc2web.com/java/overrideConstructor.html
— posted by midilin @ 02:17PM
[コメントが多かった順の記事]
人の心理の裏をかくホームページ集客術:リピータになってもらうためには(233)
ホームページ心理学第2弾「メールの書きだしとホームページ運営・集客の関係」(76)
娘が生まれた(69)
ゲームと言えば、何を思い出す? (50)
Microsoftからアクセス (30)
「目標の立て方」と「努力」と「実行力」(26)