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

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

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

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

Q&A

解決済

3回答

2418閲覧

Java 継承とオーバーライド

yk-211

総合スコア34

Java

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

0グッド

0クリップ

投稿2015/05/25 00:04

編集2015/05/25 00:33

質問です。
この2つのコードにつきまして、メイン文を別のクラスで
作成しなければならないのですが、どういったことをすればよろしいでしょうか。
また、下のコードについてはオーバーライド出来ているのでしょうか。
教えてください。

lang

1public class Calculate{ 2 3 String Add(int a, int b) { 4 return String.valueOf(a+b); 5 } 6 String subtract(int a,int b){ 7 return String.valueOf(a-b); 8 } 9 String multiply(int a,int b){ 10 return String.valueOf(a*b); 11 } 12 String divide(int a,int b){ 13 return String.valueOf(a/b); 14 } 15 public static void main (String[] args) 16 { 17 Calculate calc = new Calculate(); 18 System.out.println(calc.Add(4, 2)); 19 System.out.println(calc.subtract(4, 2)); 20 System.out.println(calc.multiply(4, 2)); 21 System.out.println(calc.divide(4, 2)); 22 } 23}

lang

1public class SubCalculate extends Calculate{ 2 3 String divide(int a,int b){ 4 return String.valueOf((a/b)+"余りは"+(a%b)); 5 } 6 public static void main (String[] args){ 7 Calculate calc = new SubCalculate(); 8 9 System.out.println(calc.divide(5,2)); 10 } 11}

新たにメイン文を別クラスで作成してみました。
ちょっと違うとは思うのですが・・・

public class Main{
public static void main(String[] args){
SubCalculate sc = new SubCalculate();
sc.divide();
}
}

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

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

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

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

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

guest

回答3

0

ベストアンサー

4 つのファイルをつくりました。
Calculate.java
Main10.java
SubCalculate.java
Main11.java

Calculate.java

lang

1public class Calculate { 2 3 String Add(int a, int b) { 4 return String.valueOf(a + b); 5 } 6 7 String subtract(int a, int b) { 8 return String.valueOf(a - b); 9 } 10 11 String multiply(int a, int b) { 12 return String.valueOf(a * b); 13 } 14 15 String divide(int a, int b) { 16 return String.valueOf(a / b); 17 } 18}

Main10.java

lang

1public class Main10 { 2 3 public static void main(String[] args) { 4 Calculate calc = new Calculate(); 5 System.out.println(calc.Add(4, 2)); 6 System.out.println(calc.subtract(4, 2)); 7 System.out.println(calc.multiply(4, 2)); 8 System.out.println(calc.divide(4, 2)); 9 } 10 11} 12

SubCalculate.java

lang

1public class SubCalculate extends Calculate { 2 3 @Override 4 String divide(int a, int b) { 5 final String ans; 6 if (b == 0) { 7 ans = "0 で割ることはできません。"; 8 } else { 9 ans = String.format("%d 余り %d", (a/b), (a % b)); 10 } 11 return ans; 12 } 13}

Main11.java

lang

1public class Main11 { 2 3 public static void main(String[] args) { 4 Calculate calc = new SubCalculate(); 5 System.out.println(calc.divide(4, 2)); 6 System.out.println(calc.divide(5, 2)); 7 System.out.println(calc.divide(4, 0)); 8 } 9 10}

Main11.java の実行結果:

2 余り 0 2 余り 1 0 で割ることはできません。

投稿2015/05/25 13:15

katoy

総合スコア22322

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

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

yk-211

2015/05/26 05:26

お忙しい中大変ありがとうございます! 自分でも作成し、同じようなソースコードになりました。 ありがとうございました。
guest

0

「メイン文を別のクラスで作成する」というのは、
今現在CalculateとSubCalculateにあるmain()メソッドを削除して、
別に新しく作成したクラスにmain()を書いて実行するという意味ではないでしょうか。

継承させるクラスにmain()があると、Staticクラスになりますので
問題の趣旨とは無関係な部分で若干ややこしくなります。削除したほうが継承の理解に繋がるかも。
あとは、MainクラスでCalculateクラスの持つ四則演算を呼び出せば良いと思います。

投稿2015/05/25 02:41

kawamori

総合スコア61

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

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

yk-211

2015/05/25 03:01

回答ありがとうございます。 分かったような分かってないようなですが、 やってみます!
guest

0

コンパイルと実行はできました?できると思いますが.

main関数は,どのクラスにも定義できます.実行したいクラスのmain関数のみが呼ばれますので,
そうまごつくことはないと思いますよ.安心してください.

投稿2015/05/25 01:14

katzC4ISR

総合スコア66

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

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

yk-211

2015/05/25 01:18

回答ありがとうございます。 メイン文の作成とはどういったことでしょうか。 1番下のMain.javaで正しいのでしょうか? ちなみに、main.javaに関してはコンパイル出来ませんでした。
katzC4ISR

2015/05/25 02:02

メイン文の作成とは,私の理解では, とあるクラスにvoid static main(String[] args)を実装することですね. 書いていただいた内容全部を,同じファイルにして,classの宣言のpublicをなくしてください. それと,sc.divide()は,引数が指定されていないです. divide(int,int)は定義されていますが,divide(void)は定義されていないので,このままではコンパイルが通らないと思います. sc.divide(3,2); にしてみてはどうでしょうか? 実行は, % java Main だったら,Main.mainが % java SubCalculate だった SubCalculate.mainが実行されますよ.
masa105

2015/05/25 02:19

publicクラスは1ファイルにつき1クラスで、その時publicのクラス名とファイル名は一致(大小文字を区別します)する必要があります。 クラス名がMainだとするならファイル名もMain.javaにしないといけません。
yk-211

2015/05/25 02:20

ありがとうございます。 説明不足だったかもしれないので、もう一度書かせていただきます。 (問題10) 足し算、引き算、掛け算、割り算を行うクラス(Calculate.java)を作成し、 各々、計算結果をStringで返却するメソッドを作成してください。 →上記Calculate.java作成 (問題11) 問題10で作成したCalculate.javaを継承したクラス(SubCalculate.java)を作成し、 割り算のメソッドをオーバーライドして計算結果と余りを返却するメソッドに変更してください。 →上記SubCalculate.java作成 ------------------------------------------------------------------------------------------- そして、追加で問題10、11についてですが、メイン文は別のクラスで作ってください。また、問題11はアノテーションも付けてください。 というものなのです。 よく分かっておらず申し訳ありません。
yk-211

2015/05/25 02:22

masa105様 ありがとうございます。 そちら記入ミスです・・・ ファイル・クラス名とも大文字にしております。 申し訳ありません。
swordone

2015/05/25 13:46

アノテーションというのは, @Override ↑これのことでは?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.51%

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

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

質問する

関連した質問