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

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

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

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

Q&A

解決済

3回答

1799閲覧

スーパークラスをもとに、サブクラスを作りたい。

coffeee

総合スコア19

Java

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

0グッド

0クリップ

投稿2016/01/19 08:32

過去に作成した円周・面積・体積を求めるプログラムに、
表面積を求めるサブクラスを作成したのですが、
表面積は「~cm2です」という表示がされません。

何が問題なのでしょうか?
ご回答よろしくお願いいたします。

class

1 double R; 2 radius(double p){ 3 R=p; 4 5 } 6 void showPrice(){ 7 float total0=(float)(2*Math.PI*R); 8 float total1=(float)(Math.PI*Math.pow(R,2.0)); 9 float total2=(float)(4.0/3*Math.PI*Math.pow(R,3.0)); 10 System.out.println("円周は "+total0+" cm."); 11 System.out.println("面積は "+total1+" cm2."); 12 System.out.println("体積は "+total2+" cm3."); 13 } 14} 15スーパークラス

class

1 Surface(double p){ 2 super(p); 3 } 4 void showPrice(){ 5 float surface=(float)(4*Math.PI*Math.pow(R,2.0)); 6 System.out.println("表面積は "+Surface+" cm2"); 7 } 8 public static void main(String[] args){ 9 radius a=new radius(12.3); 10 11 a.showPrice(); 12 } 13} 14サブクラス

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

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

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

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

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

guest

回答3

0

java

1public static void main(String[] args){ 2 radius a=new radius(12.3); 3 4 a.showPrice(); 5}

aはスーパークラスのradiusのインスタンスになっています。そのため、ここからshowPriceを呼んでもradiusクラスで決められた動きしかできません。
表面積を出したいならradiusではなくSurfaceのインスタンスを作成する必要があります。

投稿2016/01/19 14:17

swordone

総合スコア20651

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

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

coffeee

2016/01/20 06:58

ご回答ありがとうございます! おかげさまで、なぜ実行できないのかがわかりました。
guest

0

スーパークラスのインスタンスでshowPrice()メソッドを実行しているので、呼び出されるのはスーパークラスで定義しているshowPrice()メソッドになります。
サブクラスで

void showPrice(){ super.showPrice(); float surface=(float)(4*Math.PI*Math.pow(R,2.0)); System.out.println("表面積は "+Surface+" cm2"); } ```とオーバーライドさせて、サブクラスのインスタンスに実行させれば、円周、面積、体積、表面積すべて表示するメソッドになります。

投稿2016/01/19 11:49

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

coffeee

2016/01/20 07:18

ご回答ありがとうございます! super.showPrice();が必要だったのですね! おかげさまで正しく表示することができました!
guest

0

ベストアンサー

radius a=new radius(12.3);

radiusクラスは、表面積を求めるほうのサブクラスですか?

これを実行して出力されるのが、
円周、面積、体積 であれば、スーパークラスのインスタンスになっています。

こうすれば良いのかな

java

1 public static void main(String[] args){ 2 Surface a=new Surface(12.3); 3 4 a.showPrice(); 5 }

投稿2016/01/19 08:40

編集2016/01/20 01:29
Toyoshima

総合スコア422

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

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

coffeee

2016/01/20 07:20

ご回答ありがとうございます! radiusクラスは円周、面積、体積を求めるスーパークラスです。 Surface a=new Surface(12.3);に変更したところ、正しく表示することができました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問