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

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

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

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

Q&A

0回答

160閲覧

「引数 () に適用できません」とエラーが出て解決できません。

退会済みユーザー

退会済みユーザー

総合スコア0

Java

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

0グッド

1クリップ

投稿2024/11/05 00:06

実現したいこと

コンパイルエラーが出る箇所をコメントした時の実行結果が
以下のようになるようにしたいです。
クラスA
クラスA
クラスA
クラスA
クラスB
クラスB
クラスB
クラスA
クラスA
クラスA
クラスA
クラスA
クラスA
クラスD
クラスA
クラスC
クラスC
クラスA

発生している問題・分からないこと

Mainクラスの19,23,27行目でエラーが出ます。

エラーメッセージ

error

1Exception in thread "main" java.lang.Error: Unresolved compilation problems: 2 型 ClassC のメソッド call(ClassA) は引数 () に適用できません 3 型 ClassD のメソッド call(ClassA) は引数 () に適用できません 4 型 ClassE のメソッド call(ClassA) は引数 () に適用できません

該当のソースコード

import package1.ClassA; import package1.ClassB; import package1.ClassC; import package2.ClassD; import package2.ClassE; public class Main { public static void main(String[] args) { // ClassAのメソッドから ClassA a = new ClassA(); a.call(); // クラスAの出力 // ClassBのメソッドから ClassB b = new ClassB(); b.call(); // クラスBの出力 // ClassCのメソッドから ClassC c = new ClassC(); c.call(); // ClassAの出力とクラスCの出力 // ClassDのメソッドから ClassD d = new ClassD(); d.call(); // クラスDの出力 // ClassEのメソッドから ClassE e = new ClassE(); e.call(); // クラスEの出力 } } package package1; public class ClassA { public void call() { display1(); display2(); display3(); display4(); } public void display1() { System.out.println("クラスA"); } protected void display2() { System.out.println("クラスA"); } void display3() { System.out.println("クラスA"); } private void display4() { System.out.println("クラスA"); } } package package1; public class ClassB extends ClassA { public void call() { display1(); // クラスBのdisplay1を呼び出す display2(); // 親クラスのdisplay2を呼び出す display3(); // 親クラスのdisplay3を呼び出す // display4(); // コンパイルエラー } public void display1() { System.out.println("クラスB"); } } package package1; public class ClassC { public void call() { ClassA a = new ClassA(); a.call(); // ClassAのcallメソッドを呼び出す System.out.println("クラスC"); } } package package2; import package1.ClassA; public class ClassD extends ClassA { public void call() { display1(); // publicメソッド // display2(); // コンパイルエラー // display3(); // コンパイルエラー // display4(); // コンパイルエラー System.out.println("クラスD"); } } package package2; import package1.ClassA; public class ClassE { public void call() { ClassA a = new ClassA(); a.display1(); // publicメソッド // a.display2(); // コンパイルエラー // a.display3(); // コンパイルエラー // a.display4(); // コンパイルエラー System.out.println("クラスE"); }

試したこと・調べたこと

  • teratailやGoogle等で検索した
  • ソースコードを自分なりに変更した
  • 知人に聞いた
  • その他
上記の詳細・結果

調べて書き直しましたがエラーが出てしまいます。

補足

特になし

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

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

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

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

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

maisumakun

2024/11/05 00:18

ClassEの中括弧が不足していた部分は修正しましたが、問題が再現せず、正常に動作します。 ご提示のコードは、本当にその通り書いたものでしょうか(ご提示のコードでは発生し得ないエラーが生じているように見受けられます)。 https://paiza.io/projects/b-azuiWiLcd9Ko6FLdzLaQ
退会済みユーザー

退会済みユーザー

2024/11/05 00:49

ご回答誠にありがとうございます。 中括弧不足していました。すみません。 もう一度パッケージやクラス作成の所から作り直し、上記のコードを書いたら 正常に動作しました。ありがとうございます。 ただ、今の状態だと実行結果が、 クラスA クラスA クラスA クラスA クラスB クラスA クラスA クラスA クラスA クラスA クラスA クラスC クラスA クラスD クラスA クラスE ですが、実行結果を以下のように表示したい場合、 どこを修正したらよいか分かりますか? よろしくお願いいたします。 クラスA クラスA クラスA クラスA クラスB クラスB クラスB クラスA クラスA クラスA クラスA クラスA クラスA クラスD クラスA クラスC クラスC クラスA
退会済みユーザー

退会済みユーザー

2024/11/05 00:57

追加します。 mainから、以下の処理を順番に実行し、動きを確認する。 ※コンパイルエラーが発生するものもあるので、 必ず1つずつ確認すること。 ClassAのメソッドから、 ClassAのそれぞれのメソッドにアクセスする。 (同一クラスからのアクセス) ClassBのメソッドから、 ClassAのそれぞれのメソッドにアクセスする。 (同一パッケージ・子 親へのアクセス) ClassCのメソッドから、ClassAのそれぞれのメソッドにアクセスする。(同一パッケージ・継承関係のないアクセス) ClassDのメソッドから、 ClassAのそれぞれのメソッドにアクセスする。(関係のないクラスからのアクセス) ClassEのメソッドから、 ClassAのそれぞれのメソッドにアクセスする。 (関係のないクラスからのアクセス) ClassDのメソッドから、ClassCのそれぞれのメソッドにアクセスする。(パッケージ違い・子⇒親へのアクセス) ClassAのメソッドから、ClassBのそれぞれのメソッドにアクセスする。(同一パッケージ・親子へのアクセス) ClassCのメソッドから、 ClassDのそれぞれのメソッドにアクセスする。 (パッケージ違い・親⇒子へのアクセス)
maisumakun

2024/11/05 01:20

> ですが、実行結果を以下のように表示したい場合、 この形に「クラスE」の出力が皆無となってしまっているのですが、それはいいのでしょうか? (何を目的としてこのような結果を得たいのか、という意図がわからないのでコメントしづらいです)
退会済みユーザー

退会済みユーザー

2024/11/05 01:32

回答ありがとうございます。 問題文の解析が自分の中で出来ておらずすみません。 もう少し考えてみます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.37%

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

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

質問する

関連した質問