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

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

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

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

Q&A

解決済

2回答

1751閲覧

Javaで引数が合わないといわれます。

ogiogimaru

総合スコア39

Java

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

1グッド

0クリップ

投稿2020/05/13 17:59

現在Javaの継承の練習中なのですが、途中でエラーが発生してしまいました。作っていたプログラムは、Rectangleクラスで長方形の、Boxクラスで直方体の辺の合計の長さと各辺の長さをそれぞれ出力するというものです。

エラーは以下の通りです。

Inherited.java:19: エラー: クラス Rectangleのコンストラクタ Rectangleは指定された型に適用できません。

Box(int z){ ^

期待値: int,int
検出値: 引数がありません
理由: 実引数リストと仮引数リストの長さが異なります
エラー1個

プログラムは以下の通りです。

class Rectangle{ int width, height; int r_perimeter; Rectangle(int x, int y){ width = x; height = y; } int cul_1(){ r_perimeter = width*2 + height*2; return r_perimeter; } } class Box extends Rectangle{ int length; Box(int z){ length = z; } int cul_2(){ int b_perimeter = cul_1()*2 + length*4; return b_perimeter; } } class TestObjects{ Rectangle rec = new Rectangle(5,4); Box box = new Box(4); } public class Inherited{ public static void main(String[] args){ TestObjects test = new TestObjects(); System.out.println("Rectangle: width = "+test.rec.width+", height = "+test.rec.height+", perimeter = "+test.rec.cul_1()); System.out.println("Box: width = "+test.box.width+", height = "+test.box.height+", length = "+test.box.length+", perimeter = "+test.box.cul_2()); } }

本当に勉強を始めたばかりで手探り状態なので、よろしくお願いいたします。

swordone👍を押しています

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

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

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

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

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

guest

回答2

0

ベストアンサー

Rectangleのオブジェクトを作りたい時にx, y(width, height)が必要で、Boxのオブジェクトを作りたい時にはRectangleの要素に加えてz(length)が必要になるということであれば

Java

1 Box(int x, int y, int z) { 2 super(x, y); 3 length = z; 4 }

になってないと、おかしい。

Java

1 Box box = new Box(4);

だとBoxのオブジェクトにx,yの指定ができていない。

Java

1 Box box = new Box(5, 2, 4);

のように生成しないとダメ。

投稿2020/05/13 18:16

gentaro

総合スコア8949

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

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

ogiogimaru

2020/05/14 05:42 編集

super の中に直接 width と height を入れることはできないのでしょうか。 入力してみたら、 Inherited.java:20: エラー: スーパータイプのコンストラクタの呼出し前はwidthを参照できません super(width, height); ^ Inherited.java:20: エラー: スーパータイプのコンストラクタの呼出し前はheightを参照できません super(width, height); と出ました。
guest

0

継承先でのコンストラクタは、必ず親クラスのコンストラクタを呼び出す必要があります。
何も書かれていない場合は引数なしのコンストラクタが呼び出されますが、Boxクラスの親クラスであるRectangleクラスには引数なしのコンストラクタが定義されていないため、呼び出すことができません。
次のように呼び出す必要があるわけですが…

java

1 Box(int z){ 2 super(10, 20); // 数字は適当。条件不明のため何を入れるべきかはわからない 3 length = z; 4 }

コード内コメントに書いた通り、これは何を渡すべきかは私にはわかりません。

投稿2020/05/13 18:12

swordone

総合スコア20651

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問