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

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

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

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

コンパイル

コンパイルとは、プログラミング言語のテキストソース(ソースコード)をコンピュータ上で実行可能な形式(オブジェクトコード)に変換することをいいます

コンパイルエラー

コンパイルのフェーズで生成されるエラーです。よく無効なシンタックスやタイプが含まれているとき発生します。

Q&A

解決済

1回答

11577閲覧

java 指定された型に適用できません。

maccha.

総合スコア2

Java

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

コンパイル

コンパイルとは、プログラミング言語のテキストソース(ソースコード)をコンピュータ上で実行可能な形式(オブジェクトコード)に変換することをいいます

コンパイルエラー

コンパイルのフェーズで生成されるエラーです。よく無効なシンタックスやタイプが含まれているとき発生します。

0グッド

0クリップ

投稿2020/06/22 08:39

###javaでコンパイルエラーが出ました

java初心者です
継承を使う問題で、コンストラクタがうまく定義できません。

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

.\DottedLineSegment.java:8: エラー: クラス LineSegmentのコンストラクタ LineSegmentは指定された 型に適用できません。 DottedLineSegment(double Ax,double Ay,double Bx,double By,int interval){ ^ 期待値: Point,Point 検出値: 引数がありません 理由: 実引数リストと仮引数リストの長さが異なります エラー1個

該当のソースコード

java

1/* 2座標上の点を表すクラス 3x.yは点の位置 4*/ 5class Point{ 6 double x; 7 double y; 8 9 Point(double x,double y){ 10 this.x=x; 11 this.y=y; 12 } 13 14} 15 16 17/* 18点を2つ持つ線分を表すクラス 19*/ 20class LineSegment{ 21 Point A; 22 Point B; 23 24 LineSegment(Point A,Point B){ 25 this.A = A; 26 this.B = B; 27 } 28 29} 30 31/* 32点線を表示するためのクラス 33*/ 34class DottedLineSegment extends LineSegment{ 35 int interval; 36 37 DottedLineSegment(double Ax,double Ay,double Bx,double By,int interval){ 38 this.A.x=Ax; 39 this.A.y=Ay; 40 this.B.x=Bx; 41 this.B.y=By; 42 this.interval=interval; 43 } 44 DottedLineSegment(double Ax,double Ay,double Bx,double By){ 45 this( Ax,Ay,Bx, By,0); 46 } 47 DottedLineSegment(Point A,Point B,int interval){ 48 this(A.x,A.y,B.x,B.y,interval); 49 } 50 51} 52 53class Main{ 54 public static void main(String[] args){ 55 DottedLineSegment L1 = new DottedLineSegment( 56 Double.parseDouble(args[0]),Double.parseDouble(args[1]), 57 Double.parseDouble(args[2]),Double.parseDouble(args[3]), 58 2 59 ); 60 } 61} 62

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

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

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

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

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

guest

回答1

0

ベストアンサー

明示的にsuperを呼び出さない場合、派生クラスのコンストラクタは基底クラスの同じ引数のコンストラクタを呼び出します。

ところが、ここではLineSegment(double Ax,double Ay,double Bx,double By,int interval)のようなコンストラクタが存在しないためエラーとなります。

superを使って親クラスに存在するコンストラクタを呼んでください。

投稿2020/06/22 08:44

maisumakun

総合スコア145184

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

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

maccha.

2020/06/22 08:50

superを使って親クラスに存在するコンストラクタを呼ぶ、とはどこに何を書けばいいのですか?
maisumakun

2020/06/22 08:52

DottedLineSegment()の最初の行に、「super(呼びたい引数, いくつかあるかも);」のように書いてください。
maccha.

2020/06/22 09:02

DottedLineSegment(double Ax,double Ay,double Bx,double By,int interval){ super(); this.A.x=Ax; this.A.y=Ay; this.B.x=Bx; this.B.y=By; this.interval=interval; } と変えましたが、エラーが出ます .\DottedLineSegment.java:9: エラー: クラス LineSegmentのコンストラクタ LineSegmentは指定され た型に適用できません。 super(); ^ 期待値: Point,Point 検出値: 引数がありません 理由: 実引数リストと仮引数リストの長さが異なります エラー1個
maisumakun

2020/06/22 09:03

エラーメッセージのとおりです。基底クラスに引数なしのコンストラクタがありません。
maccha.

2020/06/22 09:07

基底クラスのコンストラクタが使いたいのではなく、基底クラスにないコンストラクタを作りたいのですが、
maisumakun

2020/06/22 09:11 編集

派生クラスのコンストラクタは、基底クラスのコンストラクタを呼ばなければなりません。 どうにか型を合わせて呼ぶか、あるいは必要なら基底クラスに適切なコンストラクタを追加するかをしてください。
maisumakun

2020/06/22 09:17

(上のコードでthis()が使われていますが、それと同様にsuper()も、今使っているコンストラクタと別のシグネチャを持つコンストラクタを呼ぶことができます)
maccha.

2020/06/22 09:32

class DottedLineSegment extends LineSegment{ int interval; DottedLineSegment(Point A,Point B,int interval){ super(A,B); this.interval=interval; } DottedLineSegment(double Ax,double Ay,double Bx,double By){ this(new Point(Ax,Ay),new Point(Bx,By),0); } DottedLineSegment(double Ax,double Ay,double Bx,double By,int interval){ this(new Point(Ax,Ay),new Point(Bx,By),interval); } } 少し順番をずらしてsuperを呼び出すようにしたらコンパイルできました! ですが、親クラスのコンストラクタを必ず呼び出さないといけないのは面倒ですね。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問