インスタンス化の方法とメモリ内部の動きを解説!【Java入門講座】3-3 オブジェクトの使い方

【初心者向けJava入門講座】3-3 オブジェクトの使い方 の授業動画です。
オブジェクトを作ってメソッドを呼び出す方法を解説しました。インスタンス化したときのメモリ内部の動きも理解しましょう!
⭐無料&楽しく勉強できる場所を作りたい!そんな想いで授業動画を作ってます😁
→チャンネル登録/高評価/周りにオススメ で応援してもらえると嬉しいです✨✨
🌸チャンネル登録はこちら!
kzread.info?su...
📙授業ノートはこちら!
bit.ly/3o66T47
📄プログラムはこちら!
bit.ly/3GKrzH2
👀関連動画はこちら!
▼前の動画
• 属性とメンバ変数や操作とメソッドの違い、分か...
▼次の動画
▼授業動画の一覧
• 独学でJavaプログラミングをマスター!初心...
💡チャプター
00:00 今回のテーマ
00:41 オブジェクトの使い方
12:08 サンプルプログラム
🙋‍♂️プロフィール
【せかチャン 菅原】
・東京工業大学大学院 情報理工学研究科 卒業
・大学生、大学院生のときに5年半塾講師
・IT研修講師として情報技術、プログラミングのセミナーを企画・実施
・Oracle社より「Instructor of the Year(満足度日本一)」「Java講師賞」を4年連続受賞
「分かった!」と言ってもらえる瞬間、勉強を楽しいと感じてもらえる瞬間が好きです。
フリーラーニング(無料で学べる場)を広げたいと思ってKZreadをはじめました。
一緒に楽しく勉強&成長していきましょう!
📳Twitter
/ sekachanit
🎵音源提供
DOVA-SYNDROME
dova-s.jp/
※動画によっては使用していない場合があります
#Java #プログラミング #せかチャンのJava入門講座 #せかチャン

Пікірлер: 52

  • @user-ci3zf9jk1p
    @user-ci3zf9jk1pАй бұрын

    研修でJavaの理解に苦しんで半べそかきながら見ていたのですが、菅原さんのおかげで少しわかってきた気がします。ありがとうございます😭

  • @SekaChan

    @SekaChan

    Ай бұрын

    この動画にたどり着いたということは、何とかしなくちゃって思えている証拠です👍 基本をしっかり理解できればこの先にもつながるので、無理せず自分のペースで頑張っていきましょう!

  • @YY-oj4gu
    @YY-oj4gu2 жыл бұрын

    菅原先生のいいところ①字がキレイ

  • @SekaChan

    @SekaChan

    2 жыл бұрын

    吉田雄一さん、こんにちは😃 嬉しいコメント、ありがとうございます! 少しでも見やすい動画になればと思って、字は丁寧に書くように心掛けています。 図もうまく使って、もっと分かりやすい板書を追求していきます🖊

  • @fmak3959
    @fmak39592 жыл бұрын

    もこもこの部分の説明がわかりやすかったです。インスタンス化では、変数の箱一つが用意されるわけではなく、クラス全体の箱が用意されるのですね。ここをを勘違いしてました。

  • @SekaChan

    @SekaChan

    2 жыл бұрын

    FM AKさん、コメントありがとうございました! そうですね。インスタンス化をするとオブジェクトのもこもこがボンとメモリ上にできるイメージです。 ここが分かるとこの先の理解がさらに深まりますよ👍

  • @user-qs6ok3wp3n
    @user-qs6ok3wp3n Жыл бұрын

    引数、戻り値。の所はさすがオラクルマスターさんだと思いました。有り難う御座います。

  • @SekaChan

    @SekaChan

    Жыл бұрын

    たまくんさん、コメントありがとうございました! そう感じてもらえて良かったです😄こちらこそ、動画を観てくれてありがとうございました!

  • @manabi6928
    @manabi6928Ай бұрын

    字がきれいなのはよいね! setAvg(): double は なんでやねん!って感じだけどw こういう場合は getAvg(): double または calcAvg(): double がええなあ。 頑張ってください!!

  • @SekaChan

    @SekaChan

    Ай бұрын

    ありがとうございます!! 板書の「setAvg(): double」は、たしかに「getAvg(): double」にするべきでした🙏

  • @user-sn4ji9ch7n
    @user-sn4ji9ch7n2 жыл бұрын

    Java silverのインスタンスの問題で詰まったので見返します! 良い動画をありがとうございます😊

  • @SekaChan

    @SekaChan

    2 жыл бұрын

    プログラミング勉強さん、コメントありがとうございます! Java silverや職業訓練での勉強、順調に進んでますか😄 Java silverは結構細かい問題が出てくるので、自分がコンパイラになるくらいの意気込みで頑張ってください!!

  • @harumim4409
    @harumim4409 Жыл бұрын

    改めて菅原先生の動画を観ると、板書右側は(現場で使う)設計図の基本の「キ」=ベースがあることに気づきました。 開発現場で分かりにくい説明をする人の説明よりも、こちらの動画の存在に早く気づいた人の方が成長と上達が早いと思います。

  • @SekaChan

    @SekaChan

    Жыл бұрын

    Harumi Mさん、コメントありがとうございました! そうですね。右側に書いたクラス図とメモリ上のオブジェクトの関係は、オブジェクト指向のベースともいえる考え方かなと思います。 「オブジェクト指向が苦手」って感じている人にこの動画が広まっていったら嬉しいですね😄

  • @user-fy3fx4he5n
    @user-fy3fx4he5n Жыл бұрын

    インスタンス化の方法が分からなくて困っていた所この動画を見つけて何となくですが理解出来ました!演習問題もチャレンジしてみます!配列のインスタンス化もやってくださると嬉しいです!とっても参考になりました。ありがとうございます!

  • @SekaChan

    @SekaChan

    Жыл бұрын

    みっとんファン!さん、コメントありがとうございました。 インスタンス化って分かりにくいですよね💦 この動画が理解に役立ったのなら嬉しいです。 配列の生成(←Javaでは配列はオブジェクトではないため、インスタンス化というより生成ということの方が多いですね)については、こちらの動画が参考になると思います。 →kzread.info/dash/bejne/oIehsZOsXcfRqLw.html

  • @unko_buriburi5

    @unko_buriburi5

    Жыл бұрын

  • @user-wp3eo7vt5q
    @user-wp3eo7vt5q3 ай бұрын

    はじめまして。 質問させていただきたいのですが、なぜ"菅原"という文字列は引数として渡さないのでしょうか。 stu1.name("菅原")というように書いてはだめなのでしょうか、、?

  • @SekaChan

    @SekaChan

    3 ай бұрын

    今回のサンプルプログラムでは、【stu1.name("菅原")】と書いてはダメですね。 なぜかというと、【オブジェクト名.~(引数)】という書き方ができるのは【~】がメソッドのときであって、今回のStudentクラスにnameメソッドは用意されていないためです。 例えば名前を引数と受け取るためのsetName(~)メソッドを用意しておけば、【stu1.setName("菅原")】という書き方ができるようになります。

  • @user-wp3eo7vt5q

    @user-wp3eo7vt5q

    3 ай бұрын

    @@SekaChan なるほど!非常に丁寧に教えてくださりありがとうございます。このチャンネルを見ながら勉強頑張ります✨️

  • @wakachama5547
    @wakachama5547 Жыл бұрын

    菅原先生、こんにちは! 私だけかもしれませんが、コンストラクタ周辺からこの構文の読み方がこんがらがってしまっていたので、念のため確認させてください。 mainクラス上にある以下構文ですが、こういう読み方で合ってますでしょうか? ★例 15:16 の部分 Student stu1 = new Student() 【読み方の解釈】 (左側) Studentクラスという設計図を元にしてつくったオブジェクトに、stu1という名前をつけるよ。 (右側) Studentの設計図クラスで定義したものをnewして実際に作るよ。 ⬇️ 【左と右側を合体させた解釈】 Studentの設計図クラスを元に実際にオブジェクトを作ったから左側にイコールで代入して、stu1という名前をつけるよ。 以上です。 恐れ入りますが、ご確認いただけますと幸いです🙇‍♀️

  • @SekaChan

    @SekaChan

    Жыл бұрын

    まいまいさん、こんにちは! 読み取り方はそのイメージで合ってますよ👍 さらに、6:30 までに書いたメモリ内のイメージ図が頭の中に描けるようになれたらカンペキですね。

  • @wakachama5547

    @wakachama5547

    Жыл бұрын

    @@SekaChan いつも早いレスポンスありがとうございます! お陰様で、メモリ領域のイメージ図の理解もより明瞭になりました🙇‍♀️✨️

  • @koumori7869
    @koumori78696 ай бұрын

    フリーラーニング最高です。いつも本当に助かっております。 質問ですが、本動画の実行用クラスの9行目のプリントラインにあるgetAvg()に「;」が付かないのは何故でしょうか? 「;」を付けないと設計図クラスからメソッドを呼び出せないと思っていたので不思議です! また、今まで沢山出てきた「;」はどんな役割を担っているのでしょうか? 既に本動画や別動画で解説済みでしたら申し訳ありません。以上2点をお手隙の際にご回答頂ければ幸いです。

  • @user-qe3jw8wz8b
    @user-qe3jw8wz8b4 ай бұрын

    質問です メソッドの方のvoid display,でSystem.out.printlnで名前と各種点数を出るような処理を行っているのに、mainメソッドの方で平均点を出す処理としてSystem.out.printlnを使っているところが理解できません どっちか片方にSystem.out.printlnが偏っているなら理解できますが、両方にcmdの画面で文章を出す処理があることがわからないのです 説明をお願いします

  • @user-oh7ki9yz9q
    @user-oh7ki9yz9q2 ай бұрын

    12:40秒頃の設計図クラスなんですがvoid display、 void setScore、 double getAvg の、三つの処理の順番はどのように決まっているのでしょうか。void displayを処理の最後に持ってきたりしてはいけないのでしょうか。

  • @SekaChan

    @SekaChan

    2 ай бұрын

    メソッドの順番は決まってないですね。 ためしに、display()メソッドを最後に移動してコンパイルしてみてください😄

  • @yamashita8996
    @yamashita8996 Жыл бұрын

    お世話になっております。 1つ質問失礼します。 Q:身も蓋もない疑問ですが、インスタンス化をする(もしくはしなければならない)理由とは何でしょうか。 設計図クラス全体の複製をメモリ上に確保することで、そうしない場合と比べて様々なメリットがあるから? 設計図クラスをインスタンス化しないとエラー(javaの仕様)になるから? お手数をおかけしますが、ご回答お待ちしております。

  • @SekaChan

    @SekaChan

    Жыл бұрын

    yamashitaさん、コメントありがとうございました。 「身も蓋もない疑問」とありましたが、本質をついた良い質問だと思いますよ👍 インスタンス化しなければならない理由は、特にありません。 この動画で紹介した規模のプログラムであれば、main()メソッド内で変数を作れば同じ処理をできちゃいますからね。 ただし、プログラムの規模が大きくなるとインスタンス化のメリットが出てきます。 例えば、学校で扱う情報をすべてシステム化しようとなったとします。 つまり、生徒の名前や所属するクラス・部活動・委員会の情報、さらにテストの得点もまとめて成績表を出力できるようにしたい。 さらに先生の情報も入力できるようにして、業務内容や生徒への指導内容なんかもまとめられるようにする。 このようにシステムで扱う情報と処理が多くなってくると、main()メソッドだけではプログラムがものすごーく長くなってバグが増えたり、メンテナンス(修正や機能追加)が難しくなったりするんですね。 生徒関連の情報と処理をStudentクラスに、先生関連のものをTeacherクラスにまとめて、クラスを組み合わせていくことで大きなシステムが作れるようになったわけです。 実際オブジェクト指向のプログラミングが広まったことにより、一つひとつのプログラムがより長く使われ続けるようになりました(再利用やメンテナンスがしやすくなったため)。

  • @yamashita8996

    @yamashita8996

    Жыл бұрын

    @@SekaChan ご返信ありがとうございます。 やはり、記述方法が容易されているのはそれ相応の理由があるのですね。 ただお手本通り覚えるのではなく、その意味を理解できるようにしたいと感じました。

  • @goike1321
    @goike1321 Жыл бұрын

    return文の置き換わりがピンとこないので教えていただきたいです。 ①setScore(90, 80);でメソッドに引数を渡してmathScoreとengScoreに値が代入される。 ②display();で呼び出された画面表示処理は実行され実行用クラスは続く。 までは理解できましたが、両方ともreturn文がなくても実行用クラスに戻ってきてプログラムは進んでいます。 なぜgetAvg();はreturn文を記述しないと85.0のプログラムが実行されないのでしょうか?

  • @SekaChan

    @SekaChan

    Жыл бұрын

    GO IKEさん、コメントありがとうございました。 たしかに、ここ分かりにくいですよね。鋭い質問だなぁと感じました🍀 回答を一言でいうと、 【getAvg()メソッドは戻り値の型を「double」と指定しているため】 です。 (質問と回答がズレちゃってる可能性もあるので、以下詳しく説明します) すべてのメソッドは、{ }内の処理を終えたら呼び出し元に戻って続きの処理を実行します。 つまり、getAvg()メソッドも(setScore(90,80)、display()と同じように){ }内の処理が終わったら、実行用クラスに戻って処理が進んでいきます。 そして、メソッドは ①戻り値がない ものと ②戻り値がある ものを定義できます。 メソッドを作るときに①or②を(②ならば戻り値のデータ型も)決めて、メソッド定義の1行目に ①void や ②戻り値のデータ型 を記述します。 ①の場合は戻り値がないのでreturn文はなし、②の場合はreturn文を使って「呼び出し元に戻り値を返す」という処理が必要になります。 (voidなのにreturn文を書いたり、戻り値のデータ型を指定してるのにreturn文がなかったりする場合、コンパイル時にエラーが発生します)

  • @ym-fc1lq
    @ym-fc1lq Жыл бұрын

    いつも大変分かり易い動画をありがとうございます! 一点ご質問なのですが、設計図側で以下の様なインスタンス化をしている例を見かけたのですが、これはどういった意味があるのでしょうか? インスタンス化はmain側でしか行わないと思っていました。 private Test te = new Test();

  • @SekaChan

    @SekaChan

    Жыл бұрын

    いつも動画を見てくれてありがとうございます! インスタンス化はどのクラスでもできますね。この講座でも4章に入るとそういうプログラムが出てきます。 「private」は 3-8 カプセル化( kzread.info/dash/bejne/c3V8uciYqdSrqbw.html )の動画で解説してるので、もし興味があれば見てみてください。

  • @wakachama5547
    @wakachama5547 Жыл бұрын

    菅原先生、いつもありがとうございます。 連日ですみませんが、質問させてください。 表示させるdisplay()とSystem.outの違いがイマイチ掴めておりません。 実行用クラスでdisplay()とする際は設計図クラスに戻り値のない(void)を呼び出す時に、System.out.println()とする際は設計図クラスに戻り値がある(return文を書く)ときという認識で合っておりますでしょうか? お手数ですが、お手隙の際にご回答いただけますと幸いです。

  • @SekaChan

    @SekaChan

    Жыл бұрын

    まいまいさん、THANKSコメントありがとうございました! 「連日で‥」ということで気遣ってくれたのかもしれませんが、見てくれる皆さんにとって役立ちそうな質問なら喜んでお答えするので、あまり気にしなくても大丈夫ですよ😄 (逆に、他の方にとって参考にならなそうな個人的なケースの質問にはお答えしていません) ①display()メソッドと②System.out.println()メソッドは、まず自分で作ったメソッド(①)か元々提供されているメソッド(②)かという違いがありますね。 どちらを呼び出すかは、(戻り値のありなしではなく)何を出力したいのかによって変わります。 ②は引数として渡したデータをそのまま出力するだけなのに対して、①を呼び出すと(設計図クラスで定義した通りに)そのオブジェクトの名前や英語・数学の点数を出力することができますね。

  • @wakachama5547

    @wakachama5547

    Жыл бұрын

    こんにちは、ご回答ありがとうございました! 少し引っかかっていた部分でしたが、理解致しました✨️ また、暖かいお言葉ありがとうございます😢 連日の上、質問ベタなのでご迷惑ではないか心配で恐縮しておりました。 他の方の参考になるとより嬉しいので、コード表記や定義で疑問が湧きましたら質問させていただきます🙇‍♀️

  • @ra-mf7ut
    @ra-mf7ut Жыл бұрын

    菅原先生、いつも分かりやすい動画ありがとうございます。先生の動画が本当に一番分かりやすいです。 1点質問があります。 Aクラス、Bクラスがあり、BはAを継承しています。 この時にメインクラスで A a = new B(); というコードが記載されているのですが、このコードのイメージ像が掴めません。 Student stu1 = new Student();の解説に使われているイメージ図(四角の中ともこもこの中)と同じようにA a = new B();を表現するとどのようになりますか? お忙しいところ恐縮ですが、ご教示いただけると幸いです。 今後も先生の動画で勉強を続けていきます。

  • @SekaChan

    @SekaChan

    Жыл бұрын

    r aさん、コメントありがとうございました。 一番分かりやすいって感じてもらえて良かったです! その質問は、(この動画ではなく)4章に関連深い内容ですね。 まずはこちらの動画( kzread.info/dash/bejne/q62ExtSxf7S9ktY.html )を見てもらって、それでも疑問が解決できなかったらリンク先のコメント欄で質問をしてもらえると嬉しいです😄

  • @ra-mf7ut

    @ra-mf7ut

    Жыл бұрын

    @@SekaChan お忙しい中お返事ありがとうございます! 先生の動画は一通り見たはずだったのですが、理解が足りていませんでした。お手数をおかけして申し訳ありません。 ご紹介いただいた動画とその次のポリモーフィズムの動画でもう一度理解を深めてみます。その上でやっぱり理解が難しいようでしたら、そちらの動画の方で再度質問させていただければと思います。 ありがとうございました。今後ともお世話になります。よろしくお願いいたします。

  • @agusamu1
    @agusamu1 Жыл бұрын

    いつもわかりやすい動画をありがとうございます 一つ質問なのですが、 Student stu1 = new Student() の解釈がstu1の変数のメモリ参照値がメモリ上に展開されたstudentクラスの参照先が入るということですがstu1の型をstudent型で定義する意味とはなんでしょうか?メモリの参照値しか入らないものであれば型はなんでもいいように感じてしまいました。 同じく配列の初期化も同様で int [] ary = new int[3] と定義してもaryには配列が確保されたメモリ参照値しかはいらないと思いますので変数の型を定義している意味がわかなくなってしまい、混乱しております

  • @SekaChan

    @SekaChan

    Жыл бұрын

    agusamu1さん、コメントありがとうございました。 stu1をStudent型で定義する意味は、「stu1.~」で呼び出せる変数やメソッドをStudentクラスで定義されているものに限定することですね。 もし間違えて「ary.getName();」という記述をしてしまった場合、コンパイラが変数aryと呼び出しているメソッドの整合性をチェックしてエラーを出してくれます。 このように、データ型は変数は入れ物の形(メモリ上のサイズ)を決めるとともに、その変数から呼び出せる変数やメソッドを決めるイメージですね👍

  • @agusamu1

    @agusamu1

    Жыл бұрын

    @@SekaChan 丁寧に返信頂きありがとうございます!非常に意味がよく理解できました。メモリ参照の箱であると同時にそこから呼び出されるものがどのクラスの物かを特定するような意図があったんですね。

  • @user-nw1yj8xq5b
    @user-nw1yj8xq5b10 ай бұрын

    素人質問ですが質問させてください。 コンパイルする際に、動画では、実行用をコンパイルすることによって、設計図用も自動的にインスタント化(?)されましたが、自分でコンパイルすると、エラーが発生してしまいます。エラーの説明の部分には、実行用の中にある、オブジェクトの生成の文の中の、設計図のクラス名に^が当てられ、「シンボルを見つけられません」と書いてありました。その後、設計図用→実行用 と二度コンパイルすると、実行できるようになりました。なにか、記述方法を変えれば、一度で実行することはできるのでしょうか。それとも、そういった仕様なのでしょうか。 最近、javaをはじめ、progateで学んでいたものの、サブスクライブしなければ後半が学習できないという壁にあたり、菅原先生の動画を拝見させてもらい、有難く勉強しているところです。先生の都合のつくタイミングで大丈夫なので、返答していただけると幸いです。

  • @SekaChan

    @SekaChan

    10 ай бұрын

    ぬわんさん、コメントありがとうございました。 複数のjavaファイルを一度にコンパイルする方法は、こちらの動画で解説しています。 kzread.info/dash/bejne/eZ2dxamDaajMgJc.html あくまでも「呼び出されるクラスから先にコンパイルする」という原則を理解したうえで使ってもらうと、より応用が利きやすくなるかなと思います。

  • @user-nw1yj8xq5b

    @user-nw1yj8xq5b

    10 ай бұрын

    ありがとうございます!!@@SekaChan

  • @yykk9539
    @yykk9539 Жыл бұрын

    初めてコメントさせていただきます。 今月からJAVAについて独学で学びだして、オブジェクト指向について学んでいる最中で、参考書と菅原先生の二本柱で学習させていただいおります!(とても分かりやすく何度も見させていただいております。) その過程で疑問点がございましたのでご質問させていただきます。。。 Student stu1 = new Student(); ↑ Studentクラスの開始アドレスの参照先がStudent型の変数stu1に入っているという 理屈はわかりました。 ただ、参考書では、Studentクラス内の属性部分【メンバ変数?フィールド変数?】を使用する際、例えば (String name;) と宣言していたら、(this.name)と記述した方が良いと書いておりました。その理由としては、ローカル変数や引数に同じ(name等)の変数があると、本来参照したい方ではない変数をもってきてしまう可能性があるからと書いてありました。 --------------------------------------------------------------------------------------------------------------------------------------------- ・自分が思った疑問 学習していく中で、(1)インスタンス化したクラスに属性と操作を付与して、それを1つの部品として、(2)Mainクラスのmainメソッド内では、あたかも運動会のプログラムのように呼び起こしたい(1)を記述していくということが頭に入っているのですが...。 1 (this.name)と書かなくても、Mainクラスのmainメソッド内で、stu1.nameと書けばそもそも独立性は保たれるので必要性が実感できない...。そうゆうものだから書いてるけどもやっとしています。 2 ローカル変数とは、mainメソッド内の直下で宣言、もしくは初期化された変数のことを言うのでしょうか。 3 また、メンバ変数、フィールド変数の意味は同じであり、インスタンスされたクラスの直下に定義される変数のことを言うという認識で間違いないのでしょうか。 --------------------------------------------------------------------------------------------------------------------------------------------- また、自分は、今から1年後には絶対、 (1). Javaシルバーを取る。 (2). 基本情報技術者試験を取る。 (3). サーブレット(まだ勉強できていないです)、JSP(まだ勉強できていないです)、SQL(MySQL)を使ってポートフォリオを作る! をかなえるため、毎日勉強必死にしているのですが、(1),(2)は死ぬほど努力するので、 (3)は菅原様の動画と、後々買う参考書で作れるものなのでしょうか。 また、不安になったら菅原様にお聞きしてもよろしいでしょうか。。。 長文失礼しました。 お手すきの際に、確認いただけましたら幸いでございます。 以上よろしくお願いいたします。

  • @SekaChan

    @SekaChan

    Жыл бұрын

    yy kkさん、コメントありがとうございました。 せかチャンの動画がJavaの勉強に役立っているようで良かったです😄 参考書と動画の組み合わせはとても良い勉強方法だと思うので、ぜひその調子でJavaシルバーや基本情報の取得を目指して頑張ってください! > 1 「this.~」はいつでも省略できるわけではなく、記述しないとプログラムが正しく動かないケースがあります。 「this」はこの先の動画で改めて解説するので、そちらを参考にしてください。 > 2 ローカル変数は(mainメソッドに限らず)メソッド内で定義した変数のことを指しますね。 > 3 (Javaにおいては)その認識で間違いないです。

  • @yykk9539

    @yykk9539

    Жыл бұрын

    @@SekaChan お忙しい中、返信いただきありがとうございます❗️ おそらくオブジェクト指向は習うより慣れるしかないと思っておりますので数をこなして自分で作って試していきたいと思います❗️

  • @tt6121
    @tt61212 жыл бұрын

    質問です。 メンバ変数とメソッドの引数を別の名前にしなければ成立しない理由を教えていただきたいです。 void setScore(int engScore, int mathScore){ engScore = engScore; mathScore = mathScore; } としてみたところ、すべての変数で0が代入されていました。 実行クラスから引数を受け取り、それが設計図クラスのsetScoreメソッドへと代入され格納されるなら上記でもよいと思った次第です。

  • @SekaChan

    @SekaChan

    2 жыл бұрын

    T Tさん、コメントありがとうございます。 そのプログラムでメンバ変数に代入できないのは、変数参照時は【一番内側のブロックで宣言した変数を参照する】ためです。 つまり、下の2,3行目のengScoreとmathScoreは、すべて1行目の引数であるengScoreとmathScoreを参照しています。 もし4行目で System.out.println(engScore); をしたら、代入した値が表示されます。 1: void setScore(int engScore, int mathScore){ 2: engScore = engScore; 3: mathScore = mathScore; 4: 5: } ただ、メンバ変数とメソッドの引数が同名であるほうがプログラムは読みやすくなりますよね。 こちらで説明している「this」キーワードを使うと、上の2行目で(引数ではなく)メンバ変数のengScoreに代入することができますよ👍 kzread.info/dash/bejne/kX9ny8WPqs3gXdY.html

  • @tt6121

    @tt6121

    2 жыл бұрын

    @@SekaChan ありがとうございます。代入と参照は動きが異なるということですね。 上のプログラムで成功したら「this」キーワードを使う意味は何だろう、成功しなければ原因は何だろうと考えていました。

Келесі