重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

interface HINA {
void write(String str, int age);
}

class super_class {
String name;
int age;
public void write(String str, int age){
System.out.println(str + "\t" + age);
}
super_class(String name, int age) {
this.name = name;
this.age = age;
}
}

class sub_class extends super_class implements HINA {
public void write(String str , int age) {
System.out.println(str + "\t" + age);
}

sub_class(String str , int age) {
super(str , age);
}
}

public class test3 {

public static void main(String[] args) {
super_class naru = new super_class("成瀬川なる", 17);
super_class shinobu = new sub_class("前原しのぶ", 13);
sub_class motoko = new sub_class("青山素子", 15);

if (naru instanceof HINA) naru.write(naru.name, naru.age);
if (shinobu instanceof HINA) shinobu.write(shinobu.name, shinobu.age);
if (motoko instanceof HINA) motoko.write(motoko.name, motoko.age);
}
}

これのsuper_classをOyaに、sub_classをKoにするとコンパイルエラーになります。
何故なんでしょう。
分かる方がいましたら、教えて下さい。
どうぞ宜しくお願い致します。
それと見づらくてどうもすいません。

A 回答 (6件)

適当なこと言ってしまいました。

失礼。

> Exception in thread "main" java.lang.InstantiationError: Oya
APIを見ると「アプリケーションが Java の new 構文を使って abstract クラスやインタフェースのインスタンスを生成しようとしたときにスローされます。」と書いてあります。
Oyaクラスにabstract修飾詞が付いているか、
またはインタフェースとして定義されているのではないでしょうか?
(writeの定義で引っかかるはずなのでインタフェースはないと思いますが。。。)

参考URL:http://sdc.sun.co.jp/java/docs/j2se/1.4/ja/docs/ …
    • good
    • 0
この回答へのお礼

再度のレスを頂き、ありがとうございます。
今Eclipseを使用してやっているのですが、以前に抽象クラスでOyaというものを作りました。
そこからOyaというクラス名を思いついたのですが、それがいけなかったみたいですね。
Oya1にしたらコンパイルが通りました。
こういうのは初めての体験でして、でも、気付いて当たり前の事ですし、これからは一層気をつけます。

お礼日時:2009/02/23 17:44

(訂正)


> No.4さんのおっしゃる様に入力ミスでしょう。
No.2さんのおっしゃる様に入力ミスでしょう。
    • good
    • 0

No.4さんのおっしゃる様に入力ミスでしょう。



Eclipseを使ってるなら
super_classの文字を選択した状態にする
⇒右クリック⇒「リファクタリング」を選択
⇒「名前変更」⇒「新しい名前」に"Oya"を入力して「終了」
を使うと便利ですよ。
    • good
    • 0
この回答へのお礼

レスを頂き、ありがとうございます。
自分はEclipseの置換を使って、
super_classをOyaに
sub_classをKoに
全部変換しました。
コンパイルエラーの内容から混在はしてないようです。
でも、不思議ですね。
何故通らないのでしょう。

お礼日時:2009/02/23 17:00

コンパイルエラーの内容くらい貼りなさいよ。


私エスパーじゃないから。

とりあえず推測かな。
ファイル名が悪いとか
そんな理由?
    • good
    • 0
この回答へのお礼

レスを頂き、ありがとうございます。
コンパイルエラーですが、
Exception in thread "main" java.lang.InstantiationError: Oya
at test3.main(test3.java:43)
ってでますね。
それで43ステップ目は
Oya naru = new Oya("成瀬川なる", 17);
の部分です。
これで何か分かりますか。
もう1度宜しくお願い致します。

お礼日時:2009/02/23 16:56

別に、コンパイルエラーになんてならないが。


どこか、置換忘れの箇所とかがあるんでないかね。

interface HINA {
void write(String str, int age);
}

class Oya {
String name;
int age;
public void write(String str, int age){
System.out.println(str + "\t" + age);
}
Oya(String name, int age) {
this.name = name;
this.age = age;
}
}

class Ko extends Oya implements HINA {
public void write(String str , int age) {
System.out.println(str + "\t" + age);
}

Ko(String str , int age) {
super(str , age);
}
}

public class test3{

public static void main(String[] args) {
Oya naru = new Oya("成瀬川なる", 17);
Oya shinobu = new Ko("前原しのぶ", 13);
Ko motoko = new Ko("青山素子", 15);

if (naru instanceof HINA) naru.write(naru.name, naru.age);
if (shinobu instanceof HINA) shinobu.write(shinobu.name, shinobu.age);
if (motoko instanceof HINA) motoko.write(motoko.name, motoko.age);
}
}
    • good
    • 0
この回答へのお礼

レスを頂き、ありがとうございます。
logger_manさんの書かれたとおりのソースだと思いますが、一度このソースでコンパイルしてみますね。
……………
やはりOyaがどうとかでコンパイルは通りませんでした。
logger_manさんがこれでコンパイルが通ったなら、自分の中のEclipseに問題があるわけですね。
全く何故通らないのでしょうか。

お礼日時:2009/02/23 16:53

その実際に変更したソースを提示してください


直し忘れがあるんだと思います

class super_class { <=こことか
  String name;
  int age;
  public void write(String str, int age){
    System.out.println(str + "\t" + age);
  }
  super_class(String name, int age) { <=こことか
    this.name = name;
    this.age = age;
  }
}
    • good
    • 0
この回答へのお礼

レスを頂き、ありがとうございます。
以下が変更したソースです。

interface HINA {
void write(String str, int age);
}

class Oya {
String name;
int age;
public void write(String str, int age){
System.out.println(str + "\t" + age);
}
Oya(String name, int age) {
this.name = name;
this.age = age;
}
}

class Ko extends Oya implements HINA {
public void write(String str , int age) {
System.out.println(str + "\t" + age);
}

Ko(String str , int age) {
super(str , age);
}
}

public class test3 {

public static void main(String[] args) {
Oya naru = new Oya("成瀬川なる", 17);
Oya shinobu = new Ko("前原しのぶ", 13);
Ko motoko = new Ko("青山素子", 15);

if (naru instanceof HINA) naru.write(naru.name, naru.age);
if (shinobu instanceof HINA) shinobu.write(shinobu.name, shinobu.age);
if (motoko instanceof HINA) motoko.write(motoko.name, motoko.age);
}
}

これだとコンパイルが通らないんですよ、本当に。
何故だけ物凄く知りたいです。

お礼日時:2009/02/23 16:46

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!