【完全マスター】継承やポリモーフィズムの考え方やプログラムが丸分かり【Javaプログラミング入門講座 総集編】

Sdílet
Vložit
  • čas přidán 16. 06. 2024
  • 【Java入門講座】4章 オブジェクト指向を使いこなそう! の動画を1本にまとめました。
    オブジェクト指向の継承からオーバーライド、抽象クラスやポリモーフィズム、インターフェースまで、この1本ですべて丸分かり!
    ⭐無料&楽しく勉強できる場所を作りたい!そんな想いで授業動画を作ってます😁
    →チャンネル登録/高評価/周りにオススメ で応援してもらえると嬉しいです✨✨
    🌸チャンネル登録はこちら!
    czcams.com/users/SekaChan?su...
    📙授業ノートはこちら!
    bit.ly/3evwajv
    📄プログラムはこちら!
    bit.ly/32HnOmb
    👀関連動画はこちら!
    ▼Javaの始め方(1章 総集編)
    • 【Java入門講座 総集編】40分でJava...
    ▼Javaの基本文法(2章 総集編)
    • 【Java入門講座 総集編】超初心者歓迎!J...
    ▼オブジェクト指向ー入門編ー(3章 総集編)
    • 【2時間で完全マスター】オブジェクト指向の考...
    ▼次の動画
    • 【この1本でOK】例外の種類から例外処理のプ...
    ▼授業動画の一覧
    • 独学でJavaプログラミングをマスター!初心...
    💡チャプター
    0:00:00 オープニング
    0:00:44 継承( • 継承のメリットやextendsの使い方を理解... )
    0:09:13 オーバーライド( • オーバーライドのメリットと3つの条件【Jav... )
    0:17:21 this・super( • thisとsuperの使い方を初心者向けに解... )
    0:31:54 final( • finalの意味と使い分けをシンプルに解説【... )
    0:40:07 プログラミング演習( • 継承、オーバーライド、this・superの... )
    0:56:54 参照型の型変換( • 型変換できる条件、自動とキャストの違いとその... )
    1:12:56 抽象クラスとポリモフィズム( • ポリモフィズムとは何か、使い方やメリットをコ... )
    1:33:02 インタフェース( • インタフェースの実装方法やメリット、抽象クラ... )
    1:44:05 パッケージ( • パッケージの使い方、超便利なコンパイル・実行... )
    1:59:06 プログラミング演習( • 抽象クラス、インタフェース、パッケージを総復... )
    Correction:
    34:11 finalはメソッド内で宣言する変数にもつけることが可能です
    🙋‍♂️プロフィール
    【せかチャン 菅原】
    ・東京工業大学大学院 情報理工学研究科 卒業
    ・大学生、大学院生のときに5年半塾講師
    ・IT研修講師として情報技術、プログラミングのセミナーを企画・実施
    ・Oracle社より「Instructor of the Year(満足度日本一)」「Java講師賞」を4年連続受賞
    「分かった!」と言ってもらえる瞬間、勉強を楽しいと感じてもらえる瞬間が好きです。
    フリーラーニング(無料で学べる場)を広げたいと思ってCZcamsをはじめました。
    一緒に楽しく勉強&成長していきましょう!
    📳Twitter
    / sekachanit
    🎵音源提供
    DOVA-SYNDROME
    dova-s.jp/
    ※動画によっては使用していない場合があります
    #Java #プログラミング #せかチャンのJava入門講座 #プログラマー #せかチャン

Komentáře • 119

  • @sakir8401
    @sakir8401 Před 2 lety +2

    総集編ありがとうございます!4月から初めてjavaの現場なので動画見ながら思い出しています!

    • @SekaChan
      @SekaChan  Před 2 lety +1

      Saki Haruさん、コメントありがとうございます!
      総集編が役立っているようで嬉しいです。Javaの開発デビュー、応援してますよ✊
      (他にも春からJava開発が始まる人や新人SEさんが多そうなので、今夜メッセージ動画を公開予定です)

  • @user-nx5qx3ov4t
    @user-nx5qx3ov4t Před rokem +5

    かなり理解しやすかった。
    学生の頃にプログラミング言語の勉強をしていたが、オブジェクト指向の殆どを理解できないまま
    途中で挫折したので、この動画をもっと早く見ていればよかったと感じた。

    • @SekaChan
      @SekaChan  Před rokem

      椎名明さん、コメントありがとうございました!
      オブジェクト指向って最初は理解するのが難しいですよね(僕も学生の頃はあまり分かりませんでした‥💦)
      「もっと早く見ていればよかった」と感じてもらえる動画を増やせるように、これからも頑張ります!

  • @9igon93
    @9igon93 Před 2 lety +1

    わかりやすい説明ありがとうございます。また、プログラムコードの掲出ありがとうございます。感謝します。

    • @SekaChan
      @SekaChan  Před 2 lety

      9 igonさん、コメントありがとうございました!
      この動画はJava基礎講座で一番難しい内容なので、分かりやすいと感じてもらえて良かったです。
      ソースコードもガンガン活用してもらえると嬉しいです✨

  • @user-su4hh3vz2g
    @user-su4hh3vz2g Před 7 měsíci +1

    本当に分かりやすいですし、聞いていて楽しい講習です。本当にありがとうございます。何回も聞いて、理解を深めていきたいと思います。

    • @SekaChan
      @SekaChan  Před 7 měsíci

      柏木さん、コメントありがとうございました!
      「楽しい」って感じてもらえてとても嬉しいですね😄
      Java基礎講座は6章までありますが、この4章が一番難しいと思います。
      何回か見返してもらいながら、ぜひ理解を深めていってください!

  • @user-ie8ff3kx2k
    @user-ie8ff3kx2k Před rokem +14

    ほんとにわかってもらうように、という工夫に溢れてて1000回くらいいいね押したい。聞いてるだけで楽しいです。ありがとうございます。

    • @SekaChan
      @SekaChan  Před rokem

      玉田Gさん、コメントありがとうございました!
      「わかってもらうように」という工夫が伝わったみたいで、とても嬉しいです。
      僕もどう解説しようかなと考えてるだけで楽しいです。こちらこそありがとうございます!

    • @shigeHUB
      @shigeHUB Před rokem

      @@SekaChan erdp

  • @user-zw4sk1xw5m
    @user-zw4sk1xw5m Před 2 lety +2

    わかりやすい説明で理解がすすみます。 楽しいです。 ありがとうございます。

    • @SekaChan
      @SekaChan  Před 2 lety

      影山隆さん、こんにちは。
      分かると楽しいし、楽しいと頭に入りやすいですよね。
      こちらこそ、嬉しいコメントありがとうございました✨

  • @9igon93
    @9igon93 Před rokem +1

    ただひたすらありがとうございます。感謝感謝です。

    • @SekaChan
      @SekaChan  Před rokem

      9 igonさん、コメントありがとうございました!
      こちらこそ、いつも動画を見てもらえて感謝です😄その調子で頑張っていきましょう!!

  • @user-hy7zy5ll1u
    @user-hy7zy5ll1u Před 2 měsíci +1

    いつもモチベ上げてくれる言葉を織り交ぜながら進めてくれるからほんとに勉強捗ってます!感謝です🙇

    • @SekaChan
      @SekaChan  Před 2 měsíci

      ここは特に難しいので、モチベーション上げていくのが大事ですよね!
      4章は基本講座一番の難所なので、ここが理解できたら自信もってください😄

  • @premium5648
    @premium5648 Před rokem +3

    ありがとうございました、分かりやすかったです!
    第5章に行ってきます。

    • @SekaChan
      @SekaChan  Před rokem +1

      Premiumツムツムさん、コメントありがとうございました!
      ここが入門講座で一番難しい内容なので、分かりやすいと感じてもらえて良かったです。
      第5章、行ってらっしゃい🖐

  • @user-bz5xn3cv9y
    @user-bz5xn3cv9y Před 3 měsíci +1

    何度か見返しましたが、動画の内容をしっかりと理解することが出来ました!
    授業用ノートをプリントして大事だと思った箇所を書き込みながら、同時に自分のローカルでもプログラムを動かしながら勉強しています!
    まだまだJavaの学習を始めたばかりですが、先生の動画のおかげで楽しく学習を進めることが出来ています。ありがとうございます。

    • @SekaChan
      @SekaChan  Před 3 měsíci +2

      コメントありがとうございました!
      ここはJava入門講座のなかで一番難しい章なので、この動画の内容を理解できたら自信もって良いですよ。
      ただ動画を見るだけじゃなくて、自分でポイント箇所を書き込んだり、プログラムを動かしたりしてるのがすごく良いと思います。
      この先面白いJava技術をたくさん解説してるので、これからも楽しく勉強していってください!

  • @user-oy6gn1dj9c
    @user-oy6gn1dj9c Před rokem +1

    学生です。
    来年の4月よりIT企業に入社のため、現在リモートでJava研修中です。
    総集編を1章から拝聴しております。
    どれもとても分かりやすくためになる動画で、とてもありがたいです。
    これからもお世話になります。
    応援しています!

    • @SekaChan
      @SekaChan  Před rokem

      佐藤明さん、コメントありがとうございました!
      来年からIT企業に入る予定で、もうJava研修がスタートしてるんですね。
      総集編の1章からwebアプリ編までが、新人研修で2~3週間かけて教えている内容です。
      ここまでいけたら、かなり余裕をもって社会人デビューできると思いますよ👍
      自分のペースで勉強を進めてもらえたらと思いますが、学生として過ごせる時間も貴重です。
      目の前の学生生活も思いきり楽しんでくださいね!

  • @juliuspetronius7472
    @juliuspetronius7472 Před 2 lety +5

    いろんなIT関連動画を見ましたが、ネクストドアの動画が一番わかりやすくで実戦的です。
    できれば列挙型とラムダ式について、わかりやすく教えていただければうれしいです。

    • @SekaChan
      @SekaChan  Před 2 lety

      Julius Petroniusさん、コメントありがとうございました!
      分かりやすいと感じてもらえたようで良かったです✨
      列挙型とラムダ式ですね。動画化するか検討してみたいと思います。

  • @user-yc7ge2vk9h
    @user-yc7ge2vk9h Před 9 měsíci +1

    見終わりましたーfinal。package等知らない範囲もありつつプログラミングの意図を理解できてよかったです!他も見ます

    • @SekaChan
      @SekaChan  Před 9 měsíci +1

      うちゃさん、コメントありがとうございました!
      ここまで見終わったら、Java入門講座の大きな山は越えたといえますね。
      この調子で続きも頑張ってください!

  • @Taka-it4cv
    @Taka-it4cv Před 11 měsíci +3

    ありがとうございます!

    • @SekaChan
      @SekaChan  Před 10 měsíci

      THANKSコメントありがとうございました!
      この動画が役に立ったみたいで良かったです😄
      この御礼は良い動画を作り続けることでお返ししていきます!

  • @Noguchimasataka
    @Noguchimasataka Před rokem +1

    Javaを独学で勉強しSilver取得を目指しているのでとてもわかりやすくて助かっています。(環境がMacなので、コンパイルの時に少し違いますが汗)
    ありがとうございます。

    • @SekaChan
      @SekaChan  Před rokem

      Masatakaさん、コメントありがとうございました!
      環境が違うのは大変だとは思いますが、僕の動画を見てもらえていて嬉しいです✨
      このJava入門講座を見た人から、Silverに合格できたっていう報告をよく頂いています。
      Masatakaさんも、ぜひ合格目指して勉強がんばってください!

  • @user-gu3gg1ws8y
    @user-gu3gg1ws8y Před 9 měsíci +1

    わかりやすい説明ありがとうございます。
    1つ疑問に思ったのですが、抽象メソッドを持たせずにpublic void proctice(){};としておいたほうが後で使用するときにオーバーライドで処理内容を変更できるし、クラスのインスタンス化も可能になるため便利ではないかと思ったのですが、このような考え方はオブジェクト指向から外れているということになるのでしょうか?

    • @SekaChan
      @SekaChan  Před 9 měsíci

      ああさん、良い質問をありがとうございました。
      これは【proctice()メソッドの中身を実装しなくてもインスタンス化できて良いのか】によりますね。
      もしこれを許してサブクラス側の自由度を上げたい場合は、そのようなメソッド定義もアリだと思います。
      ただ、サブクラスでproctice()メソッドを実装してもしなくても良い状態になってしまうので、そもそもスーパークラスで public void proctice(){} を書く必要がない気もしますね。

    • @user-gu3gg1ws8y
      @user-gu3gg1ws8y Před 9 měsíci +2

      @@SekaChan ありがとうございます!非常にわかりやすかったです!自分はAndroid Studioでのアプリ開発をJavaで行いたいと思っています。今後Javaを用いたAndroidアプリを実際に開発する動画を見てみたいです。プロの方がどのようにクラスの設計を行い、オブジェクト指向をどの場面で使うのかが非常に興味深く参考にさせていただきたいです。ぜひ検討よろしくお願いします!

  • @user-er4qw6nm6e
    @user-er4qw6nm6e Před 20 dny +1

    自分用
    ・参照型の型変換
    継承・ポリモフィズム
    インターフェース?

  • @kadentube0674
    @kadentube0674 Před rokem +3

    演習問題4-10について確認させてください。
    Vehicleを継承するコンストラクタ上で、
    crewNumへの値の設定を"super.crewNumではなく"this.crewNum"になっているのは、
    アクセス修飾子がprotectedのため、自オブジェクトの変数のような扱い方ができるという認識であっておりますでしょうか。

    • @SekaChan
      @SekaChan  Před rokem

      jon kimさん、コメントありがとうございました!
      その認識で合ってますよ👍
      Vehicleを継承したので自クラスのメンバ変数として扱うことができます!

    • @kadentube0674
      @kadentube0674 Před rokem +1

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

  • @user-oq4tt7fg9p
    @user-oq4tt7fg9p Před 4 měsíci +1

    37:25
    実行用クラスで宣言された変数のこともメンバ変数というのですね。
    設計図クラスで宣言される変数のことを指す用語だと認識していました。

    • @SekaChan
      @SekaChan  Před 4 měsíci +1

      たしかに実行用クラスでもメンバ変数を宣言することはできますが、僕の動画では宣言した記憶がありません。
      もしそのように発言しているところがあったら修正が必要な可能性が高いので、お手数ですが教えてもらえると嬉しいです🙏
      (37:25付近を何度か見直しましたが、そのような発言は確認できませんでした)

    • @user-oq4tt7fg9p
      @user-oq4tt7fg9p Před 4 měsíci +1

      @@SekaChan
      お返事ありがとうございます。自分の理解が曖昧な為もしかしたら解釈が間違っているかもしれませんがご了承ください。
      34:16の板書で「メンバ変数にfinalをつけると代入ができなくなり定数になる」と記述されており
      37:10で実行用クラス内に「final int BASE_NO=1000;」と定数が宣言されていたので、私は板書と結びつけて
      この記述はメンバ変数が定数になったもの、つまり実行用クラスにメンバ変数が定義されていたと認識してしまいました。

    • @SekaChan
      @SekaChan  Před 4 měsíci +1

      @@user-oq4tt7fg9p
      返信ありがとうございました。
      また、詳細を教えてもらえて本当に感謝しています。
      結論からいうと、finalキーワードは変数全般につけることができて、37:10で紹介しているサンプルではローカル変数(メソッド内で宣言した変数)にfinalをつけていました。
      ご指摘の通り、34:16の板書だと「finalをつけられるのはメンバ変数だけ」とも読み取れてしまうため、動画内に注釈を加えたいと思います。
      誤解につながる情報をお伝えしてしまってすみませんでした。
      また、指摘してもらえたことが調べ直すきっかけになりました。改めてありがとうございました!

    • @user-oq4tt7fg9p
      @user-oq4tt7fg9p Před 4 měsíci +1

      ​@@SekaChan
      いえいえ、とんでもないです!!
      こちらこそお返事のお陰で認識の再確認ができました。ありがとうございます!
      これからも菅原さんの動画にお世話になりますのでよろしくお願いします。

  • @user-jq2tg1cm3b
    @user-jq2tg1cm3b Před rokem +1

    動画を見て勉強させていただいてます。4-7章での質問です。
    Student6.javaの3行目、private Club Club はメンバー変数でclubオブジェクトを生成しているのでしょうか。
    private Club club = new Club()ではないため、オブジェクトを生成しているわけではないのでしょうか。

    • @user-jq2tg1cm3b
      @user-jq2tg1cm3b Před rokem +1

      申し訳ございません。解決いたしました。
      もう一度見直すと動画で触れられておりました。
      いつも参考になっております。ありがとうございます。

    • @SekaChan
      @SekaChan  Před rokem +1

      けんぴっぴさん、コメントありがとうございました!
      ここはたしかに難しいですよね。でも、自分で疑問を解決できたみたいで良かったです!
      入門講座の中では4章が一番難しいので、ここを乗り越えれば一気に視界が開けますよ👍

  • @ksk4884
    @ksk4884 Před rokem +1

    いつもありがとうございます!今回も質問させてください。。
    演習問題5-2に関してですが、そもそもpublic Taxi2(int no, int price)の
    コンストラクタを作成する必要はあるのでしょうか?
    public Taxi2(int no) {
    super(no);
    }
    のコンストラクタを用意したところ同じ結果となりました。
    this()の使用練習のためにあえて解答例のような記述にしているのでしょうか?
    それとも別の理由はあるのでしょうか?
    初学者のため的外れな質問でしたら申し訳ございません。

    • @SekaChan
      @SekaChan  Před rokem

      kskさん、コメントありがとうございました。
      たしかに、今回の問題に限れば引数2つのTaxi2()コンストラクタは不要ですね。
      メンバ変数priceにはデフォルト初期値として0が代入されるため、わざわざコンストラクタ内で0を代入しなくても同じように動作します。
      ただ、今後別のプログラムでもTaxiクラスが使われるかもしれないという拡張性を考慮したら、Taxiのオブジェクト生成時に(ナンバーと)料金も設定できた方が便利です。
      もちろん「this()の使用練習」という意図もありますが、実際の開発でもこういうケース(すぐには使わない機能だけど将来のために実装しておく)はよくありますよ👍

    • @ksk4884
      @ksk4884 Před rokem +1

      @@SekaChan ありがとうございます!理解できました!本当にいつもありがとうございます泣
      引き続き配信楽しみにしています!

  • @user-qr5cy1yo8e
    @user-qr5cy1yo8e Před rokem +1

    いつもお世話になっております!質問なのですが、1:39:18 あたりの説明で疑問だったのですが、実装と継承って同時にできるのですか?public class Baseball extend club impliments Englishable みたいに…

    • @SekaChan
      @SekaChan  Před rokem +1

      焼肉食べたいさん、コメントありがとうございました!
      継承と実装は同時にできますよ😄書き方はその通りで、
      > class A extends B implements C, D, ‥
      と指定します。

    • @user-qr5cy1yo8e
      @user-qr5cy1yo8e Před rokem +1

      @@SekaChan 丁寧にありがとうございます🙇‍♂️これからも動画視聴させていただきます🙇‍♂️

  • @user-ck5eo7uy5x
    @user-ck5eo7uy5x Před 2 měsíci +2

    すごくわかりやすくて感謝の気持ちです。
    まだまだわからないことたくさんありますが、この動画のおかげで少しでも解決できてスッキリしています。
    ありがとうございます

    • @SekaChan
      @SekaChan  Před 2 měsíci +1

      ここは入門講座で一番難しいので、わからないことがあっても大丈夫ですよ👍
      特に参照型の型変換とかポリモフィズムは、勉強を進めることで「そうだったんだ!」と思える部分もあります。
      なので、ぜひその調子で楽しく勉強していってください!

  • @mumu_luffy
    @mumu_luffy Před rokem +2

    本当に分かりやすいです。グットボタン一回じゃ足りない( ; ; )

    • @SekaChan
      @SekaChan  Před rokem

      あいうえお掃除機さん、コメントありがとうございました!
      グッドボタン1回でも嬉しいです✨
      これからもボタンを連打したくなるくらいの動画をたくさん作っていきます!

  • @user-hh5tj7vf8h
    @user-hh5tj7vf8h Před 9 měsíci +1

    いつも有料級の分かりやすい動画を作ってくださりありがとうございます♪
    さっそく質問ですが、抽象クラスとポリもフィズムのところでClubクラスがStudentクラスのスーパークラスというところが、
    何故なのでしょうか? 継承されている訳では無く、Studentクラスのメンバ変数にClubクラスのインスタンスをもっているだけなので、疑問に思いました。
    拙い質問ですが、お答え頂けると幸いです!

    • @SekaChan
      @SekaChan  Před 9 měsíci

      研人さん、コメントありがとうございました♪
      この動画の中で、「ClubクラスがStudentクラスのスーパークラス」になるところはないかなと思います。
      もし僕がそう解説してしまっているところがあればそれは間違いなので、その部分(時間)を教えてもらえるととても嬉しいです🙏
      ※板書で上のような記述がないことは確認しました

    • @user-hh5tj7vf8h
      @user-hh5tj7vf8h Před 9 měsíci

      わざわざ調べて返信してくださりありがとうございます!
      俺の勘違いかもしれませんが
      1時間32分15秒のところが、
      疑問点に思いました。
      これから先も素晴らしい動画を見て勉強させて頂くので質問もまたよろしくお願いします!!

  • @user-lj2jc8zy9h
    @user-lj2jc8zy9h Před rokem +3

    1:27:00のポリモフィズムについてお伺いしたいことがあります🙇‍♂️
    Student6のメンバ変数に
    「private Club club」でオブジェクトを持たせてるとのことで、なぜこのような書き方をすることでClubオブジェクトを利用することができるのでしょうか??
    基本編でやった変数・メソッドの利用で教えていただいた「オブジェクト名.変数名」という形をしているから利用できるという解釈で宜しいでしょうか??
    また、1:42:05のBasballクラスのメソッドでSystem.ou.println("LANGUAGE")にしてはいけないのでしょうか?😰

    • @SekaChan
      @SekaChan  Před rokem +4

      さんかめはめさん、コメントありがとうございました。
      > 「private Club club」でオブジェクトを持たせてるとのことで、なぜこのような書き方をすることでClubオブジェクトを利用することができるのでしょうか??
      まず、自分で作った設計図クラスをもとにしてオブジェクトを作ることができますよね😄
      例えば、
      Student stu = new Student();
      と書くと、stuはStudentクラスをもとにしたオブジェクトの変数となります。
      これは、
      int i = 10;
      と比べて考えると、Studentはデータ型を表しているという見方もできます。
      つまり、変数宣言は「データ型 変数名」と書きますが、このデータ型に自分で作った設計図クラスの名前を書ける、という考え方ですね。
      メンバ変数に
      private Club club;
      と書くとClubオブジェクトを利用できるのは、
      private int counter;
      と書いてint型の変数を利用できるのと同じイメージです。
      > BasballクラスのメソッドでSystem.ou.println("LANGUAGE")にしてはいけないのでしょうか?
      このように記述すると「LANGUAGE」という文字列がそのまま表示されてしまいますね💦

    • @user-lj2jc8zy9h
      @user-lj2jc8zy9h Před rokem +1

      @@SekaChan とても詳しくご回答していただいてありがとうございます!とてもスッキリしました!
      LANGUAGEについては質問の仕方が間違っておりました🙇‍♂️
      System.out.println(LANGUAGE)ではダメなのでしょうか??
      また、自分でためしてみようかなと思うのですがふと気になりまして、、

    • @SekaChan
      @SekaChan  Před rokem

      @@user-lj2jc8zy9h さん、返信ありがとうございます。
      もし自分で試していないのであれば、まずは試してみましょう👍
      プログラミングは一度でコンパイルが成功することはあまりなく、エラーメッセージを読み取って解決する力が必要不可欠です。
      そうやってコンパイラと会話する時間が、理解を深めるのに一番つながりますよ。

    • @user-lj2jc8zy9h
      @user-lj2jc8zy9h Před rokem +1

      @@SekaChan ありがとうございます!
      結局別のことに時間を割いてしまってまだ試せてないので、今日試してみます!
      ありがとうございます🙇‍♂️

    • @SA-yf7ww
      @SA-yf7ww Před rokem

      @@user-lj2jc8zy9h 私も同じ所を疑問に思いました。ありがとうございます。

  • @user-jc4vk1qt2w
    @user-jc4vk1qt2w Před rokem +3

    ガチで思う、セカちゃんさんは神。
    これ全部無料で見れるって…

    • @SekaChan
      @SekaChan  Před rokem +1

      トンコツ炒飯さん、コメントありがとうございました!
      これからも有料レベルを超える授業動画を作り続けて、皆さんの背中を押していきますよ✨

  • @user-oq4tt7fg9p
    @user-oq4tt7fg9p Před 4 měsíci +1

    質問です。
    40:00からのプログラミング演習の問題1について
    Taxi1クラスの各メソッドでpriceに値を代入していく際、「this」を用いるのは間違いでしょうか?
    例えばstartメソッドだと「this.price=420;」とする書き方です。よろしくお願いします。

    • @SekaChan
      @SekaChan  Před 4 měsíci

      「this.price」として値を代入しても大丈夫ですよ😄
      実際に試してみてもらうと、コンパイル・実行ともにうまくいくと思います。

    • @user-oq4tt7fg9p
      @user-oq4tt7fg9p Před 4 měsíci +1

      @@SekaChan
      大丈夫なんですね!ありがとうございます!

  • @user-tr8gf7ob7o
    @user-tr8gf7ob7o Před 2 měsíci +1

    勉強不足、聞き損じがあったら申し訳ありません💦
    4章最初の演習問題の1番について質問なのですが、class Taxi1の8行目のprice +80 のpriceは上から処理を行っている為、現時点でstartのpriceが適用されて420が代入されるという認識で大丈夫でしょうか??

    • @SekaChan
      @SekaChan  Před 2 měsíci

      4章の演習問題、難しいですよね😄
      Taxi1クラスの処理について、書いてくれた記述自体は間違えていないです。
      ただ、もしかしたら誤解してるかもしれないので念のため補足しておくと…
      「price + 80」でpriceに420が代入されるのは、DriveTaxi1クラスの5行目でstart()メソッドを呼び出した時点でt1オブジェクトのメンバ変数priceに420が代入されているためですね。

    • @user-tr8gf7ob7o
      @user-tr8gf7ob7o Před 2 měsíci +1

      @@SekaChanなんとなく理解できてなかったモヤモヤがすっきり理解ができました!ありがとうございます🙇

  • @user-fp1gm6ct2c
    @user-fp1gm6ct2c Před rokem +2

    本当にお世話になっています。50才オーバーで学習を始めた初学者です。 過去にも質問されているようですが、 4-7抽象クラスにおいて、 Club club で対象のオブジェクトを使用する とのことですが、 抽象クラスはインスタンス化できないので、抽象クラスを利用するには変数として宣言してから、それに対応する(インスタンス化された)オブジェクトを代入して使用する との理解になるのでしょうか? また、このように変数として宣言することで使用できるのは 抽象クラス以外(普通のクラス)でも可能なのでしょうか? トンチンカンな質問と理解かも知れませんが、ご回答頂けると幸いです。

    • @SekaChan
      @SekaChan  Před rokem +1

      永尾社長さん、コメントありがとうございました。
      抽象クラスの変数にはそのサブクラスのインスタンスを代入することができる、というイメージですね(参照型の型変換が自動で行われています)。
      このような仕組みがあるおかげで、Student6クラスのコンストラクタがTandFクラスのインスタンスとFootballクラスのインスタンスの両方を受け取れるようになります。

    • @user-fp1gm6ct2c
      @user-fp1gm6ct2c Před rokem +1

      ​@@SekaChan ご回答ありがとうございます。「抽象クラスの変数にはそのサブクラスのインスタンスを代入することができる、というイメージ」なるほど! 抽象クラスを Club club のように宣言して使用することが理解できてきました。ありがとうございました。

  • @user-kr8bs8vh8k
    @user-kr8bs8vh8k Před 8 měsíci

    すみません、質問があります。
    1:22:XXくらいの、Studentクラス内のメンバ変数Club club;の理解があまりできなかったのですが、
    String、intのようにClubという型が有るのでしょうか?(他の動画で解説されてたらすみません。)

    • @SekaChan
      @SekaChan  Před 8 měsíci

      アイリス大山さん、コメントありがとうございます。
      この質問は他のコメント欄で回答しているので、そちらを確認してもらえると嬉しいです。
      (@user-lj2jc8zy9hさんの「1:27:00のポリモフィズムについて~」の質問です)

    • @user-kr8bs8vh8k
      @user-kr8bs8vh8k Před 8 měsíci +1

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

  • @Lizm0414
    @Lizm0414 Před 7 měsíci +1

    すごく初歩的な質問かも知れないのですが…
    試験問題でよく解答が選択式で、選択肢の中にコンパイルエラーなのか、実行時エラーなのか、というものがありますが、これらはどのように判別すれば良いのでしょうか?
    どっちになるのかは状況ごと覚えるしかないのでしょうか?🤔
    一般的に文法で間違ってたらコンパイルエラーになると言われるかと思いますが、static void maiとnが抜けていてもコンパイルが出来てしまいますね。文法以前の問題がコンパイルを通過してしまうので、何を基準にコンパイル/実行時エラーは決まっているんだろうと思ってしまいました🤔

    • @SekaChan
      @SekaChan  Před 7 měsíci

      lizm Vaioさん、コメントありがとうございました。
      コンパイルエラーか実行時エラーか、状況ごとに覚えるのは正直不可能かなと思います(状況が無限にあるので‥)
      Java Silverのような資格試験では結果を「覚える」のではなく、結果を「理解する」ことが重要です。
      つまり、
      > static void mai(String[] args){ ~ }
      というメソッド定義でも、どうしてコンパイルが通るのか?を説明できる力をつけていきたいですね。
      自分がコンパイラになったつもりで、プログラムのどの部分に文法的な誤りがあるかを見分ける意識で勉強を進めてみてください👍

    • @Lizm0414
      @Lizm0414 Před 7 měsíci +1

      自分がコンパイラになったつもりでΣ(´⊙ω⊙`)その発想はなかったです!本当に覚えるしかないと思ってたので、考え方変えて頑張ります✨
      ありがとうございました🎶

  • @user-cy7no2dm9h
    @user-cy7no2dm9h Před 3 měsíci +1

    1:23:18 Studentクラス二行目のClub clubとはどんな意味なんでしょうか
    初学者で混乱してしまいました、回答よろしくお願いします

    • @SekaChan
      @SekaChan  Před 3 měsíci

      「Club club」のような書き方は、たしかに慣れるまで分かりにくいですよね‥
      同じ内容がこちらのコメント欄でたくさん議論されてるので、ぜひ参考にしてみてください!
      ●【Java入門講座】4-7 抽象クラスとポリモーフィズム
      czcams.com/video/tfrmaMGJtic/video.html

  • @Mtat-mg7rs
    @Mtat-mg7rs Před 2 měsíci

    this・superについて質問です。
    this()やsuper()が両方無い場合、super()自動で挿入されるという事ですが
    コンストラクタを記述した時点でsuper()が自動で挿入される状況にあるということでしょうか?
    また、自動挿入されるからと、あえて書かない場合などありますか?
    黒本に自動挿入を考慮する問題があり気になりました。
    宜しくお願い致します。

    • @SekaChan
      @SekaChan  Před 2 měsíci

      2つの質問とも聞かれている意図がちょっと分からない部分はあるんですが、「コンストラクタを記述した時点でsuper()が自動で挿入される状況にある」という表現は、そうともいえるのかなという印象ですね。
      また、「自動挿入されるからあえて書かない」というより、「this()やsuper()を呼び出す必要がない場合は書かない」というイメージでしょうか。

    • @Mtat-mg7rs
      @Mtat-mg7rs Před 2 měsíci +1

      ありがとうございます
      助かります!

  • @dekutarou7742
    @dekutarou7742 Před měsícem

    質問失礼します。
    this・superの所ですが、ですが、
    スーパークラス、サブクラスが、
    public Person3(String name)
    ですが、なぜコンストラクタにpublicの記載があるのでしょうか?
    ご教授頂けると幸いです。

  • @user-ms2yp9xq8p
    @user-ms2yp9xq8p Před rokem +1

    Lesson5の演習問題2問目をビデオと同じコードでコンパイルしているつもりなのですが、
    以下のようなエラーメッセージが出てコンパイルできません。
    .\Taxi2.java:8: エラー: クラス Car2のコンストラクタ Car2は指定された型に適用できません。
    super(no);
    ^
    期待値: 引数がありません
    検出値: int
    理由: 実引数リストと仮引数リストの長さが異なります
    エラー1個
    Car2とTaxi2のコンストラクタの引数の数と合っていないということなのでしょうか?

    • @SekaChan
      @SekaChan  Před rokem +1

      谷冨誠一郎さん、コメントありがとうございました。
      プログラムを見ないでエラーの原因を探るのは難しいですが、このエラーメッセージを読む限りでは「Car2クラスにint型を受け取るコンストラクタが用意されていない」ということのようですね。
      つまり、Taxi2クラスではなく、Car2クラスにエラーの原因があると予想できます。
      Car2クラスは提供ファイルをそのまま使う問題になっていますが、もしかしたら問題1のCar1クラスを(クラス名を変えて)再利用していないでしょうか😄
      その場合でCar1クラスのsetNoメソッドをCar2のコンストラクタに変更し忘れていると、上のようなエラーが発生します。
      このあたりを確認してみてください。

    • @user-ms2yp9xq8p
      @user-ms2yp9xq8p Před rokem +1

      すぐに回答いただきありがとうございます。
      もう一度よく確認してみます。
      こちらの動画のおかげで、これまで本を読むだけではモヤっとしていたことが、ずいぶんクリアになってきたと感じています。
      定年前のジジイですが、頑張りますので、素晴らしい理念の動画を作り続けて下さい。

  • @user-vr1sc6bp6o
    @user-vr1sc6bp6o Před měsícem

    クラスが型みたいな使い方途中からされてるところからイマイチよくわからない。。
    ストリングとかと同じ使い方ということなのでしょうか??

  • @user-zs1vd7zu9w
    @user-zs1vd7zu9w Před rokem +1

    すみません、質問です student3クラスの13行println()のところですけど、どうして[this.StuNO]じゃないです。回答お願いします。

    • @SekaChan
      @SekaChan  Před rokem

      tetsuさん、コメントありがとうございました。
      13行目はthis.stuNoとしても大丈夫ですよ😄
      ただ、(7行目のコンストラクタと違って)display()メソッドには引数にstuNoがないためthisは省略可能です。

  • @user-tr8gf7ob7o
    @user-tr8gf7ob7o Před měsícem

    DriveTaxi2 をコンパイルすると実引数リストと仮引数リストが違うと出てきてCar2コンストラクタが適用できないとエラーが出てしまいます。(superで呼び出している部分です。)
    しかし記述は全部答えと一緒のはずなので何が原因かわかりません。もし改善策があれば教えていただけますでしょうか。

    • @SekaChan
      @SekaChan  Před měsícem

      この情報だけでエラーの原因を特定するのは難しいですが、「記述は全部答えと一緒」であれば、プログラム以外のところに原因がある気がしますね。
      例えば、前のコンパイル結果が残っていて、それを実行しちゃっているようなケースとかが多いです。

    • @user-tr8gf7ob7o
      @user-tr8gf7ob7o Před měsícem +1

      前のやつのせいでした。すみませんありがとうございます

  • @fuwafuri
    @fuwafuri Před rokem +2

    エラー: シンボルを見つけられません、となって実行できませんどうすればよいですか

    • @SekaChan
      @SekaChan  Před rokem +1

      kakikukeko “l.fuwamon.l” aiueoさん、コメントありがとうございました。
      「シンボル」はクラスや変数、メソッドなどの名前を指します。
      おそらく、エラーメッセージで見つけられないシンボルがあわせて表示されていると思います。
      そのスペルが間違えていないか、どこかでしっかり宣言されているかなど「名前」に着目して調べてみてください😄

    • @fuwafuri
      @fuwafuri Před rokem +1

      ありがとうございます

  • @60_daysff_per_year
    @60_daysff_per_year Před 9 měsíci

    Class Person extends Student {
    } 日本人からするとこちらにした方が「Personから拡張した Student 」感が大きいな。
    海外発祥の言語はいつも違和感を覚える。

  • @user-jc4vk1qt2w
    @user-jc4vk1qt2w Před rokem +1

    スマホの簡単なアプリを作ったりしたいんですけど、javaの書き方はすごく分かりやすいのですが、コマンドラインへ入力、コマンドラインへの出力で文章や計算結果が表示されるというのが、どのようにユーザーがスマホを操作してユーザーのスマホへ出力される、に置きかわるのかイメージがわかないです。

    • @SekaChan
      @SekaChan  Před rokem +1

      トンコツ炒飯さん、コメントありがとうございました。
      コマンドラインベースのプログラムとwebブラウザベースのプログラムでは入出力の書き方が大きく変わるように、スマホベース向けのプログラムも新しい書き方を身につける必要がありますね。
      スマホアプリに関する解説動画は作っていないので、「Java スマホアプリ」等で検索してみてください😄

    • @user-jc4vk1qt2w
      @user-jc4vk1qt2w Před rokem

      @@SekaChan コマンドラインベースのプログラムは何に役立つんですか?

  • @user-hy7zy5ll1u
    @user-hy7zy5ll1u Před 2 měsíci

    質問なのですが
    import java.util.*
    みたいな書き方はしてよさそうでしょうか?
    せかちゃんさんが必要なものを選んで読み込んでくれるから良いかなって思ってたんですけど、テキスト見ると推奨されないって書いてて迷ってる感じです。

    • @SekaChan
      @SekaChan  Před 2 měsíci

      僕もインポートは「*」ではなく具体的なクラス名(インタフェース名)を書いた方が良いと考えています。
      (どこかの動画で話した記憶はあるんですが、昔のことで忘れてしまいました‥)
      ただ、初学者が使うときや同じパッケージからたくさんインポートするときは「*」を使っても問題ないのかなという感じですね。

  • @daimonion209
    @daimonion209 Před 10 měsíci +1

    Lesson10の問題3について質問です。
    サンプルプログラムをコンパイルすると以下のようなエラーが発生しました。
    ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
    Vehicle.java:3: エラー: クラスmypack.Vehicleが重複しています
    public abstract class Vehicle{
    ^
    UseVehicle.java:6: エラー: Vehicleにアクセスできません
    Vehicle[] v = new Vehicle[3];
    ^
    ソース・ファイル.\Vehicle.javaは不正です
    ファイルにクラスVehicleが含まれていません
    削除するか、ソース・パスの正しいサブディレクトリにあるかを確認してください。
    Bus.java、Stopable.java、Taxi.java、Train.javaについても同様のエラーが発生しました。
    試行錯誤の結果、UseVehicle.javaのインポートの部分「import mypack.*;」を以下のように変更すると無事にコンパイルすることができました。
    import mypack.Bus;
    import mypack.Stopable;
    import mypack.Taxi;
    import mypack.Train;
    import mypack.Vehicle;
    私の開発環境の設定の問題なのでしょうか?
    「import mypack.*;」のままでも無事にコンパイルできるようにしたいと思うのですが、何か解決策があるようならお教えいただけるとうれしいです。

    • @SekaChan
      @SekaChan  Před 10 měsíci +1

      コメントありがとうございました。
      エラーメッセージをすべて載せてもらえたおかげで、どんなエラーが発生したのかがよくわかりました。
      ただ、それでもエラーの直接的な原因を特定するのは難しいですね‥
      『クラスmypack.Vehicleが重複』とあるのでVehicleクラスを複数コンパイルしていそうですし、『ファイルにクラスVehicleが含まれていません』ということからVehicle.javaには違うクラスを書いていそうな感じもみてとれます。
      おそらく、演習問題に取り組むときに一度作ったJavaファイルをコピペして新しいクラスを作っている(←これ自体は良いと思います)けれど、クラス名を変え忘れたりしてJavaファイルとクラスの対応やパッケージの関係が崩れてしまっている可能性がありますね。
      classファイルをすべて削除して、正しいJavaファイルをコンパイルし直してもらうとうまくいくかもしれません。

    • @daimonion209
      @daimonion209 Před 10 měsíci

      @@SekaChan お忙しいところわざわざお返事ありがとうございます。
      classファイルを削除して再挑戦しても結果は同じでした。
      私の環境では無理のようなので諦めたいと思います。
      ありがとうございました。

  • @wcnv
    @wcnv Před 6 měsíci +1

    四章もありがとうございます^^
    三章のご返信も、見進めていったら仰っていることがわかりましたd(^_^o)
    *extendsや@override、super、thisみたいな形はDartにも出てくるので、理解の助けになりそうです
    本当に呪文だったです笑
    *Javaの勉強は先生のおかげで楽しいです!
    「この言語はどんなことができるか」というのが大事なのと同じくらい、もしくはそれ以上、
    「この言語にはどの先生がいるか」が大事な気がします。
    自分用
    ------------------------------------------------------------------------------------------------------------------------------------------
    11:04
    *Overrideとは・・・サブクラスでスーパークラスの「メソッド」を再定義すること。条件を揃える。
    20:00
    setName(int n){
    name=n;}
    みたいな感じにしていたのを、
    setName(int name){
    this.name=name;}
    とすることで、変数名をいちいち考えなくてよくなる。
    25:22
    なぜ
    this"未設定"
    で下のコンストラクタを呼び出せるのだろう?
    this.name="未設定";
    とかだったらわかる気がするけれど・・
    と思ったけれど、そもそも、class()にはそう言う機能があるんだよ、と言う説明ですね^^;
    と納得したところで思ったこと・・・同じclass内で例えばthis.dogやthis.starなどいろんな変数にthisを使っていた場合、this."未設定"はどのthisと繋がるんだろうか?
    27:30
    続き・・・this()はthis.dogみたいなのを呼び出すよりはコンストラクタ全体を呼び出すようなイメージみたい。
    30:00
    そういうことか〜〜〜!
    じゃあ、コンストラクタを呼び出すと言うか、同じクラスを呼び出す感覚。()に引数を設定し直してクラスに引数として渡すと、結果としてその中に設置されている適当なコンストラクタに代入される。
    36:47
    「8行目でdisplayメソッドをオーバーライドしています。」
    *superやthisを使うのは、基本的には、同じ変数名を使用するためだと考えて良さそう?
    なぜなら、メソッドをpublicにして、クラスをextendsしておけば、違うクラスのメソッドでも呼び出せるはずだから。
    いずれにせよ、三章と四章は繰り返し見るのが良さそう。
    48:50 なるほど、その手が!
    55:00
    ここだけ間違えた!!
    this superはコンストラクタ内の先頭に書くことになっている。それを書かないと、自動的にsuper();が挿入される。すると、この問題の場合、具体的には親クラスであるCarクラスが呼び出され、引数はないのでCar()コンストラクタが呼び出され、Car()と表示される。
    57:00
    型変換というか、クラス変換?
    そして、型変換のときと逆な気がする。
    1:04:00
    なんでオーバーライドは有効なんだろう?

    • @SekaChan
      @SekaChan  Před 6 měsíci +1

      ないとさん、コメントありがとうございました!
      もう4章まできたなんて進むのが速いですね。
      たしかに、「誰に教わるか」って大切な気がします。
      学校の授業でも、相性の良い先生に教えてもらえた科目はグンと伸びますからね。
      Javaの楽しさが伝わっているようでとても嬉しいです😄
      ここを乗り越えれば入門講座のゴールが見えるので、その調子で楽しみながら頑張っていってください!