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

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

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

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

Q&A

5回答

379閲覧

クラス、メソッドを定義するとは

退会済みユーザー

退会済みユーザー

総合スコア0

Java

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

0グッド

1クリップ

投稿2021/08/20 07:48

編集2021/08/20 09:23

現在Javaの勉強をしているのですが、メソッド、クラスを"定義する"、“呼び出す”という言葉が頻繫に出てきます。
“定義する”、“呼び出す”とは具体的にどのような記述のことを言うのでしょうか。

例えば
public void test() {
処理内容
}
という記述を「メソッドを定義する」
mainメソッド以外の記述したメソッドを
public void main(String[] args) {
test();
のような形でmainメソッド内に記述することを「呼び出す」と言う。
という認識でよろしいでしょうか?

素人質問ですみません。

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

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

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

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

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

m.ts10806

2021/08/20 07:54

「出てくる」という記事に説明あるのでは。
退会済みユーザー

退会済みユーザー

2021/08/20 08:00

そうですね。その記事で理解できていればここで質問せずに済んでいました。
maisumakun

2021/08/20 08:08

「その記事」はどのようなものでしょうか? (学習素材として質が悪い、あるいは他言語の学習者にJavaだけ導入するもの、という可能性も考えられます)
m.ts10806

2021/08/20 08:12

理解できる内容になっているかの判断材料がこちらにはないので質問本文に提示してください。 記事の書き方が問題なのか、質問者さんの理解不足なのか 前者なら記事の訂正を依頼する必要もあるでしょう。後者ならもしかしたら日本語の理解力の問題にもなり得るので他者にどうにかできない可能性も出てきます。 定義する 呼び出す 以外に表現しようがなく(英語の原文なら理解できる?)、サンプルコードがないとは考えられません。 なんにせよ、今回はどういう経緯や背景で質問してきているか他者に伝わったほうが今後の質問者さんのためにもなります。
m.ts10806

2021/08/20 08:19

過去に実際に記事の内容が悪い、古い、嘘を書いていた、入門者向けではなかった などの理由で質問者が理解できなかったということもありましたし、嘘を書いていた記事に訂正依頼を出したこともあります。 この手のことは出典(もしくは根拠、エビデンス)の明示は必須である旨はご承知おきください。(「質問するときのヒント」にも「どの記事のどこがわからなかったのか記載して質問しよう」という旨の記載があります)
退会済みユーザー

退会済みユーザー

2021/08/20 08:39

回答していただいた方へのコメントに現在の自分の認識を書きました。 https://nobuo-create.net/java-beginner-11/#i-3 こちらの記事を読んで今回は回答へのコメントをしました。 仰る通り自分の日本語能力、理解力に欠陥があるようなので間違っていたら煽らず、というのは難しいかもしれませんが煽らずに指摘していただけるとありがたいです。
BeatStar

2021/08/20 09:02

> ...というのは難しいかもしれませんが煽らずに指摘していただけるとありがたいです 上の方々の指摘を煽りと思うのでしたら、この業界は向いていませんよ。 そもそもプログラマやSEは『考える事』と「調べる事」が仕事です。 丸暗記して問題を解くだけ……ではありません。 そもそも殆ど答えがないことが多いです。 なので、日々勉強する覚悟が無いとやっていけませんよ。 別に「理解が出来ないならやめておけ」とは言いません。 ですが、ほとんどの人が思うと思われる、「なぜ調べようとすらしない?」と思いますね。私も。 煽り抜きで。
m.ts10806

2021/08/20 09:07

質問本文に記載してください。 質問本文に書いてないことは伝わりません。赤の他人ですから。
退会済みユーザー

退会済みユーザー

2021/08/20 09:11

回答者へのコメントは読めないのでしょうか? すみませんサイトの仕様を理解していませんでした。
退会済みユーザー

退会済みユーザー

2021/08/20 09:16

ご指摘ありがとうございます。 自分としては、例えば public void test() { 処理内容 } という記述を「メソッドを定義する」 mainメソッド以外の記述したメソッドを public void main(String[] args) { test(); のような形でmainメソッド内に記述することを「呼び出す」と言う。 という認識でいいかという、YESかNOで答えていただけるように書いたつもりだったので、どの方もYESでもNOでもなく「調べろ」と仰っていたのが何故だろうなと思い煽られているのかと感じてしまいました。 ここで質問すれば「その認識はあっている」「間違っている」という回答をいただけると勘違いしていた自分が恥ずかしいです。
maisumakun

2021/08/20 09:22 編集

> YESかNOで答えていただけるように書いたつもりだったので 質問はそうなっていないです。それが伝わるように質問を構成する必要があります。 回答の追記のコメントに書かれていることはありますが、それはあくまで「補足」ということで、「いちばん聞きたかったこと」だとは解釈されていません。
m.ts10806

2021/08/20 09:22

読めないわけではなくここはあくまで「質問への追記修正依頼」だからです。
退会済みユーザー

退会済みユーザー

2021/08/20 09:22

回答者へのコメントで追記していたので、質問の編集をしておきます。 揚げ足を取らせるような質問者で申し訳ありません。
Zuishin

2021/08/20 09:26

いちいち煽らなきゃ質問できないのか。
退会済みユーザー

退会済みユーザー

2021/08/20 09:27

不快にさせて申し訳ございません。 回答していただけると嬉しいです。
m.ts10806

2021/08/20 09:34

言い換えると こちらのコメント欄は「質問への追記修正依頼」とサービスでは”定義” されており、デフォルト非表示のためクリックして”呼び出し”しないと表示されないのです。それも最新3件のみで全部表示させるためにはもう1クリックで過去コメントを”呼び出し”する必要があります。(伝わってほしい・・・)
m.ts10806

2021/08/20 09:34

あと追記してほしいのは記事URLです。
dodox86

2021/08/20 10:23

回答ではないのでこちらにコメントするのですが、日本語能力に不備があると自覚している場合、このような場所で第三者と文でのやり取りすると埒が明かないことが多いので、口頭(可能な限り知っている人と対面で)でやり取りできる相手をなんとか見つけるのが良いはずです。まぁ、この昨今の事情で極めて難しいことだとは思いますが。
jimbe

2021/08/20 10:25

Metapad さんが読まれたというリンク先を見て、いきなり > mainメソッドは勝手に呼ばれますが、mainメソッド以外のメソッドは自分で呼ばないとダメです。では呼んであげましょう。 と出て噴いてしまいました ^^;
guest

回答5

0

書いた通りにしか動かないのがプログラムですが、「概念」を完全言語化することが難しい項目も多く、「そういうもの」として何となく認識しておくしかない要素も結構多いのです。
(もちろん固有名詞は確実におさえるべき)

なので「日本語の理解不足もあるかもしれない」という懸念は多少はあるものの、一概に理解不足が悪いとは言い切れないところもあります。

定義する

辞書を引いた通りです。

Webilio辞書

1 物事の意味・内容を他と区別できるように、言葉で明確に限定すること。「敬語の用法を定義する」
2 論理学で、概念の内包を明瞭にし、その外延を確定すること。通常、その概念が属する最も近い類と種差を挙げることによってできる。

「設定」と言っても良いかもしれません。
ゲームなどでキャラクターを作った時に、「名前」「性別」「体格」「人種」「服装」などを決めていく作業など。

プログラミングにおいても同じで、
「名前」「型」「持っている要素」「呼び出すために必要な情報(引数)」「内部の処理」「実行の成果物(返却値)」
などなどを設定していく作業を「定義」と言えると思います。

どういう働きをするのか決めるわけです。

呼び出す

定義したものを利用・使用すること。

以上です。

参考にされた記事にも下記のように太字で書かれています。

メソッドの処理内容を定義する

       ↓
そのメソッドを実際に使う(処理内容を実行する)

これが「定義」と「呼び出し」です。
通常は1セットです。呼び出すから定義する。
呼び出されない機能を定義することは基本的にはないです(ライブラリや汎用機能などは除く)


上記のように「そうとしか表現しようがない」ので、「細かいことはいいからとりあえずコード書いて動かしてみよう」という趣旨で書かれているのではないでしょうか。

実際に入門系の書籍でもこの傾向は強いです。
まずは動くものを書いて「できたつもり」になってもらうことが入門書の目的ですからね。
実践となるとそうはいきませんが、入門者・初心者向けのものは細かいことまで言及されていないことも多いです。

それでいいと思います。
今は細かいことは考えず、どんどんミニマムコードを書いて「プログラムが動くこと」を実感していけば良いと思います。

ざっと当該サイトの記事読みましたが、「Javaの初心者を対象とした入門講座」とあるだけあって、分かりやすく丁寧に書かれていると思いました。
語句の定義にこだわる必要はないんじゃないでしょうか。

説明語句はあくまで「説明・コメント・注釈」であってプログラムコードとして動いてくれるわけではないので、「そういうもの」としてコードを書くことを主体として学習を進めてください。

投稿2021/08/20 09:51

編集2021/08/20 09:58
m.ts10806

総合スコア80861

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

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

m.ts10806

2021/08/20 10:03 編集

サイトの記事や表記で分からないことがあったら筆者に問い合わせてみるのもありです。 この手のアウトプットをするような人ってフィードバックを待ってたりします。余程ディスったりしない限りは有難がられるのではないでしょうか。 Qiitaに記事投稿する人、teratailの質問に回答する人もその傾向はあると思います。
guest

0

例えば
public void test() {
処理内容
}
という記述を「メソッドを定義する」

あってます。
このあたりは、クラスとインスタンスの違いを学習するとしっくりしてくるかもしれないです。

mainメソッド以外の記述したメソッドを
public void main(String[] args) {
test();
のような形でmainメソッド内に記述することを「呼び出す」と言う。

あってます。
こkは、構造化プログラミングを学習すると理解が深まるかと思います。

投稿2021/08/21 03:43

TetsujiMiwa

総合スコア1124

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

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

0

例えば

public void test() {
処理内容
}
という記述を「メソッドを定義する」
mainメソッド以外の記述したメソッドを
public void main(String[] args) {
test();
のような形でmainメソッド内に記述することを「呼び出す」と言う。
という認識でよろしいでしょうか?

「定義する」の側はまぁいいんじゃない?
(細かく言えば,「記述すること」を「定義する」,その「記述」自体を指しては「定義」と称するのではないかな.)

で,どこぞにメソッドを定義することの根本的な目的とは,そのメソッドの処理をいつか実施することにあり,「じゃあこれ一体いつ実施すれば良いんですかね?」って話になる.
それを実施させる手続きが「呼び出し」と称される.

あなたが示した例は,
「test メソッドの処理を実施させたいところ(この例ではmainメソッドの中)に,「呼び出す」ためのコードを書いたぞ」
という感じ.

#Java知らんけど.

投稿2021/08/20 09:44

fana

総合スコア11708

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

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

0

あまりにもアレなので回答しておきます。


まず、今回の質問の前に、「メソッドとは」を学びましょう。

プログラミングしていると、大体似たような処理をすることがあります。
意外と多いです。

たとえば、良い例が思いつかないのでアレな例ですが、

Java

1int a; // これにユーザが入力した値が入っている 2 3int ans; // これに結果のデータが入る 4if( a == 1 ){ 5 ans = 100; 6}else if( a == 2 ){ 7 ans = 10; 8}else if( a == 3 ){ 9 ans = 1; 10}else ...

のような処理を、複数の場所で行うとします。

この束を便宜上、「処理A群」としましょうか。

そして、mainメソッドの最初と、最後、中間でこの処理A群を行い、それぞれの間に何かしらの処理があるとします。

Java

1// 処理A群 2 3int b = 10 +100; 4int c = (b * 2); 5... // 何らかの処理 6 7// 処理A群 8 9// 何らかの処理 10 11// 処理A群

と言う具合に。

その場合、どのようにやりますか?

毎回コピペ? それとも手打ち? どっちでもいいですが、もしこれで仕様が変わり、

if( a == 1 )... が、

if( a == 1 && str1.equals( str2 ) )...

つまり、「a が 1 かつ str1が str2 と同じなら」とかのようになるとどうでしょうか。

少なくとも上記の例であれば3箇所(最初、途中、最後) は修正すべきですね。

でもこれが100箇所とかになるとどうでしょうか。

もう、コードすら見たくないですね。(私ならマジで思うし)

そこでC言語でいう関数としてまとめます。( Javaだとメソッドだけど、今回は微妙に違うため )

構造は ( "■" を半角スペースと見立てて )

アクセス修飾子■型■メソッド名( 引数... ){ // 何らかの処理 return■戻り値; }

となります。

ただし、型 = 戻り値の型 です。

処理内容を見ると、

aの値で判断し、ansの値を決めています。

ということは、

「aの値からansの値を割り出したい」という感じでしょうか。

ということなので、

Java

1private int calc( int a ){ 2 if( a == 1 ){ 3 return 100; 4 }else if( a == 2 ){ 5 return 10; 6 }else if( a == 3 ){ 7 return 1; 8 }... 9return 10}

のようになりますね。

でもこれはあくまで定義しただけです。

定義しても呼び出さないと使えません。

そもそもJavaだとmainメソッドに書かれている処理しかしないので。
( mainメソッドから呼ばれているメソッドの中に書いてもいいけど )

なので呼び出しましょう。

ということで

Java

1// (mainメソッド内で) 2 3int a; // 入力されているものとする 4 5int ans = calc( a );

とするならどうでしょうか。

修正も比較的簡単ですね。内部のif文の条件がすべて変わっても、単に calcメソッドを修正すればいいだけなので。

これが「メソッド呼び出し」。

mainメソッドに書いてあるから「呼び出し」ではなく、額面通り、呼び出すから「呼び出し」。

投稿2021/08/20 09:37

編集2021/08/20 10:02
BeatStar

総合スコア4958

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

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

dodox86

2021/08/20 09:58

ご回答の内容自体に異議を挟むものではないのですが、質問者さんが「C言語を知っている」前提ではないのですから、C言語を例にとった置き換えの表現はかえって理解を阻むことがあると思います。
BeatStar

2021/08/20 10:01

あ…そうですね…… 修正しておきます…… (普通に書くと、「メソッドはクラスのメンバである必要があるから前提が違う」とか突っ込まれることがありそうなので)
Zuishin

2021/08/20 10:02

関数とメソッドは同じではないので余計ややこしくなります。 メソッドは関数と同義ではなく、関数の一種です。 たとえばコンストラクタは関数ですがメソッドではありません。 コンストラクタがメソッドの一種でないことは次の文にも表れています。 https://docs.oracle.com/javase/jp/8/docs/api/java/lang/reflect/Constructor.html#getAnnotatedReceiverType-- > このExecutableが表すメソッドまたはコンストラクタの戻り型を表すオブジェクト
m.ts10806

2021/08/20 10:05 編集

dodox86さんに同じく・・・ ただ、現状であまり細かいことに言及されても今の質問者さんは混乱するだけではないでしょうか。たぶんパンクします。
dodox86

2021/08/20 10:08

> 現状であまり細かいことに言及されても今の質問者さんは混乱するだけ こちらについて、私も同意します。英語のドキュメントによくある "call"とか "define" に絡めて説明、と言うことも考えましたが、混乱するだけと思ったので回答もやめました。
guest

0

とりあえず検索のキーワードを。
たぶん読めばわかると思いますが、わからないならもう少し具体的に質問してくれればと思います。

java メソッド 定義する

java メソッド 呼び出す

調べればいいだけのものは質問するより、検索した方が早いですし、
キーワードを見れば、わかると思いますが疑問に思ったことを単語にして分解すれば
たいてい欲しい情報を得られます。

投稿2021/08/20 08:06

momon-ga

総合スコア4820

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

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

退会済みユーザー

退会済みユーザー

2021/08/20 08:32

質問への指摘にもある通り自分の日本語能力の不足もあって理解できていない部分もありますが、例えば public void test() { 処理内容 } という記述を「メソッドを定義する」 mainメソッド以外の記述したメソッドを public void main(String[] args) { test(); のような形でmainメソッド内に記述することを「呼び出す」と言う。 という認識でよろしいでしょうか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問