現在Javaの継承の練習中なのですが、途中でエラーが発生してしまいました。作っていたプログラムは、Rectangleクラスで長方形の、Boxクラスで直方体の辺の合計の長さと各辺の長さをそれぞれ出力するというものです。
そこで、 super というのを使っていたのですが、うまく機能してくれず理由もさっぱりわかりません。
エラーは以下の通りです。
Inherited.java:20: エラー: スーパータイプのコンストラクタの呼出し前はwidthを参照できません
super(width, height);
^
Inherited.java:20: エラー: スーパータイプのコンストラクタの呼出し前はheightを参照できません
super(width, height);
コードは以下の通りです。
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){ super(width, height); 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()); } }
Javaを学習し始めてまだ少ししかたってないのでわからないことだらけです。よろしくお願いいたします。
回答2件
あなたの回答
tips
プレビュー