質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Q&A

解決済

5回答

14663閲覧

Javaのプログラムでコンパイルエラーになります。

退会済みユーザー

退会済みユーザー

総合スコア0

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

0グッド

1クリップ

投稿2016/11/27 12:43

編集2016/11/27 13:00

Java Bronzeの問題の問題で以下のソースでコンパイルエラーになるのですがどこをどう直したら画面に表示されますか??回答よろしくお願いします。

Java

1class Parent{ 2 public void method(){ 3 System.out.println("Parent"); 4 } 5} 6class Child extends Parent{ 7 public void method(String val){ 8 System.out.println(val); 9 } 10 11} 12class Main{ 13 public static void main(String[] args){ 14 Parent p = new Child(); 15 p.method("Child"); 16 } 17}

###発生している問題・エラーメッセージ

Main.java:20: エラー: クラス Parentのメソッド methodは指定された型に適用できません。 p.method("Child"); ^ 期待値: 引数がありません 検出値: String 理由: 実引数リストと仮引数リストの長さが異なります

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答5

0

ベストアンサー

Parent には String を引数に取る method が無く、Child の method(String val) は
引数の違う親クラスの method() をオーバーライドできません。

であるのに、Parent 型の変数 p で Child のインスタンスを参照して、String を引数に取る
method を呼び出そうとしているため、String を引数に取れる method は無いというエラーが出ています。

解決方法はいろいろあると思いますが、方法の一つとしては Parent クラスに処理が空の
public void method(String val)メソッドを用意して、それをオーバーライドさせる方法があるかと思います。

Java

1class Parent{ 2 public void method(){ 3 System.out.println("Parent"); 4 } 5 6 public void method(String val){ 7 //空 8 } 9} 10class Child extends Parent{ 11 public void method(String val){ 12 System.out.println(val); 13 } 14 15} 16class Main{ 17 public static void main(String[] args){ 18 Parent p = new Child(); 19 p.method("Child"); 20 } 21}

投稿2016/11/27 15:44

編集2016/11/28 04:38
JavaTea

総合スコア29

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

Parentクラスはメソッドmethod(String val)を持っていません。
なので、コンパイルエラーです。
Childクラスはメソッドmethod(String val)を持っています。

Mainクラスには手を入れずにChildクラスのメソッドmethod(String val)を呼び出すにはメソッドをオーバーライド(上書き)してやる必要があります。
Parentにメソッドmethod(String val)を新規で追加する。もしくは既存のmethod関数にStringの引き数を追加してやればいいかと思います。
器はParentだけど実態はChildなのでChildのメソッドを呼び出します。

投稿2016/11/28 00:40

tantanegg

総合スコア213

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

引数の型がStringではなくStirngになっていますよ

投稿2016/11/27 12:52

Kakky7s

総合スコア122

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2016/11/27 13:01

回答ありがとうございます。自分の手違いでエラー文を写し間違えました。すいません。
guest

0

以下で表示はされます

java

1class Parent{ 2 public void method(){ 3 System.out.println("Parent"); 4 } 5} 6class Child extends Parent{ 7 public void method(String val){ 8 System.out.println(val); 9 } 10 11} 12class Main{ 13 public static void main(String[] args){ 14 Parent p = new Child(); 15 p.method(); 16 } 17}

Child表示だと以下です

java

1class Parent{ 2 public void method(){ 3 System.out.println("Parent"); 4 } 5} 6class Child extends Parent{ 7 public void method(String val){ 8 System.out.println(val); 9 } 10 11} 12class Main{ 13 public static void main(String[] args){ 14 Child p = new Child(); 15 p.method("Child"); 16 } 17} 18 19または 20class Parent{ 21 public void method(){ 22 System.out.println("Parent"); 23 } 24} 25class Child extends Parent{ 26 public void method(String val){ 27 System.out.println(val); 28 } 29 30} 31class Main{ 32 public static void main(String[] args){ 33 Parent p = new Child(); 34 Child a=(Child)p; 35 a.method("Child"); 36 } 37}

投稿2016/11/27 12:51

編集2016/11/27 13:48
退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

エラーメッセージを見ると単なるtypoに見えるのですが、本当に質問文の記載内容でコンパイルしてますか?

投稿2016/11/27 12:51

ynakano

総合スコア1894

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2016/11/27 13:01

回答ありがとうございます。すいません自分の手違いでエラー文を写し間違えました。すいません。
ynakano

2016/11/27 13:29

tetratailさんのコードできちんと回答されていると思うのですが、Mainクラス内の"p"はParentクラスをインスタンス化していますよね。 Parentクラスのmethodメソッドは引数を取らない(取れない)ので、「実引数リストと仮引数リストの長さが異なります」というエラーになっています。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問