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

【Java入門講座】4章 オブジェクト指向を使いこなそう! の動画を1本にまとめました。
オブジェクト指向の継承からオーバーライド、抽象クラスやポリモーフィズム、インターフェースまで、この1本ですべて丸分かり!
⭐無料&楽しく勉強できる場所を作りたい!そんな想いで授業動画を作ってます😁
→チャンネル登録/高評価/周りにオススメ で応援してもらえると嬉しいです✨✨
🌸チャンネル登録はこちら!
kzread.info?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年連続受賞
「分かった!」と言ってもらえる瞬間、勉強を楽しいと感じてもらえる瞬間が好きです。
フリーラーニング(無料で学べる場)を広げたいと思ってKZreadをはじめました。
一緒に楽しく勉強&成長していきましょう!
📳Twitter
/ sekachanit
🎵音源提供
DOVA-SYNDROME
dova-s.jp/
※動画によっては使用していない場合があります
#Java #プログラミング #せかチャンのJava入門講座 #プログラマー #せかチャン

Пікірлер: 122

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

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

  • @SekaChan

    @SekaChan

    Жыл бұрын

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

  • @shigeHUB

    @shigeHUB

    Жыл бұрын

    @@SekaChan erdp

  • @sakir8401
    @sakir84012 жыл бұрын

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

  • @SekaChan

    @SekaChan

    2 жыл бұрын

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

  • @user-su4hh3vz2g
    @user-su4hh3vz2g8 ай бұрын

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

  • @SekaChan

    @SekaChan

    8 ай бұрын

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

  • @9igon93
    @9igon932 жыл бұрын

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

  • @SekaChan

    @SekaChan

    2 жыл бұрын

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

  • @9igon93
    @9igon93 Жыл бұрын

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

  • @SekaChan

    @SekaChan

    Жыл бұрын

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

  • @user-zw4sk1xw5m
    @user-zw4sk1xw5m2 жыл бұрын

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

  • @SekaChan

    @SekaChan

    2 жыл бұрын

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

  • @user-hy7zy5ll1u
    @user-hy7zy5ll1u3 ай бұрын

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

  • @SekaChan

    @SekaChan

    3 ай бұрын

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

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

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

  • @SekaChan

    @SekaChan

    Жыл бұрын

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

  • @user-bz5xn3cv9y
    @user-bz5xn3cv9y4 ай бұрын

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

  • @SekaChan

    @SekaChan

    4 ай бұрын

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

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

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

  • @SekaChan

    @SekaChan

    Жыл бұрын

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

  • @user-yc7ge2vk9h
    @user-yc7ge2vk9h11 ай бұрын

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

  • @SekaChan

    @SekaChan

    11 ай бұрын

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

  • @user-ck5eo7uy5x
    @user-ck5eo7uy5x4 ай бұрын

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

  • @SekaChan

    @SekaChan

    4 ай бұрын

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

  • @Taka-it4cv
    @Taka-it4cv Жыл бұрын

    ありがとうございます!

  • @SekaChan

    @SekaChan

    Жыл бұрын

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

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

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

  • @SekaChan

    @SekaChan

    Жыл бұрын

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

  • @juliuspetronius7472
    @juliuspetronius74722 жыл бұрын

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

  • @SekaChan

    @SekaChan

    2 жыл бұрын

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

  • @Noguchimasataka
    @Noguchimasataka2 жыл бұрын

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

  • @SekaChan

    @SekaChan

    2 жыл бұрын

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

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

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

  • @SekaChan

    @SekaChan

    Жыл бұрын

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

  • @user-oq4tt7fg9p
    @user-oq4tt7fg9p6 ай бұрын

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

  • @SekaChan

    @SekaChan

    6 ай бұрын

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

  • @user-oq4tt7fg9p

    @user-oq4tt7fg9p

    6 ай бұрын

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

  • @SekaChan

    @SekaChan

    6 ай бұрын

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

  • @user-oq4tt7fg9p

    @user-oq4tt7fg9p

    6 ай бұрын

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

  • @user-gu3gg1ws8y
    @user-gu3gg1ws8y11 ай бұрын

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

  • @SekaChan

    @SekaChan

    11 ай бұрын

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

  • @user-gu3gg1ws8y

    @user-gu3gg1ws8y

    11 ай бұрын

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

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

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

  • @SekaChan

    @SekaChan

    Жыл бұрын

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

  • @kadentube0674

    @kadentube0674

    Жыл бұрын

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

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

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

  • @user-jq2tg1cm3b

    @user-jq2tg1cm3b

    Жыл бұрын

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

  • @SekaChan

    @SekaChan

    Жыл бұрын

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

  • @user-er4qw6nm6e
    @user-er4qw6nm6e2 ай бұрын

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

  • @user-hh5tj7vf8h
    @user-hh5tj7vf8h11 ай бұрын

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

  • @SekaChan

    @SekaChan

    11 ай бұрын

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

  • @user-hh5tj7vf8h

    @user-hh5tj7vf8h

    11 ай бұрын

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

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

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

  • @SekaChan

    @SekaChan

    Жыл бұрын

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

  • @ksk4884

    @ksk4884

    Жыл бұрын

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

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

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

  • @SekaChan

    @SekaChan

    Жыл бұрын

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

  • @user-qr5cy1yo8e

    @user-qr5cy1yo8e

    Жыл бұрын

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

  • @user-kr8bs8vh8k
    @user-kr8bs8vh8k10 ай бұрын

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

  • @SekaChan

    @SekaChan

    10 ай бұрын

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

  • @user-kr8bs8vh8k

    @user-kr8bs8vh8k

    10 ай бұрын

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

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

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

  • @SekaChan

    @SekaChan

    Жыл бұрын

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

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

    初歩的な質問になりますが、開発環境を主にVScodeで行っていますが、ほぼプログラムの動きは同じという認識で問題ありませんでしょうか?

  • @SekaChan

    @SekaChan

    Ай бұрын

    特別な設定をしていなければ、その認識で大丈夫です。

  • @user-oq4tt7fg9p
    @user-oq4tt7fg9p6 ай бұрын

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

  • @SekaChan

    @SekaChan

    6 ай бұрын

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

  • @user-oq4tt7fg9p

    @user-oq4tt7fg9p

    6 ай бұрын

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

  • @user-tr8gf7ob7o
    @user-tr8gf7ob7o4 ай бұрын

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

  • @SekaChan

    @SekaChan

    4 ай бұрын

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

  • @user-tr8gf7ob7o

    @user-tr8gf7ob7o

    3 ай бұрын

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

  • @dekutarou7742
    @dekutarou77422 ай бұрын

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

  • @user-cy7no2dm9h
    @user-cy7no2dm9h5 ай бұрын

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

  • @SekaChan

    @SekaChan

    5 ай бұрын

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

  • @Lizm0414
    @Lizm04148 ай бұрын

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

  • @SekaChan

    @SekaChan

    8 ай бұрын

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

  • @Lizm0414

    @Lizm0414

    8 ай бұрын

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

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

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

  • @SekaChan

    @SekaChan

    Жыл бұрын

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

  • @user-fp1gm6ct2c

    @user-fp1gm6ct2c

    Жыл бұрын

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

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

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

  • @SekaChan

    @SekaChan

    Жыл бұрын

    さんかめはめさん、コメントありがとうございました。 > 「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

    Жыл бұрын

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

  • @SekaChan

    @SekaChan

    Жыл бұрын

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

  • @user-lj2jc8zy9h

    @user-lj2jc8zy9h

    Жыл бұрын

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

  • @SA-yf7ww

    @SA-yf7ww

    Жыл бұрын

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

  • @Mtat-mg7rs
    @Mtat-mg7rs4 ай бұрын

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

  • @SekaChan

    @SekaChan

    4 ай бұрын

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

  • @Mtat-mg7rs

    @Mtat-mg7rs

    4 ай бұрын

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

  • @user-vr1sc6bp6o
    @user-vr1sc6bp6o3 ай бұрын

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

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

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

  • @SekaChan

    @SekaChan

    Жыл бұрын

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

  • @user-ms2yp9xq8p

    @user-ms2yp9xq8p

    Жыл бұрын

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

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

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

  • @SekaChan

    @SekaChan

    Жыл бұрын

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

  • @user-tr8gf7ob7o
    @user-tr8gf7ob7o3 ай бұрын

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

  • @SekaChan

    @SekaChan

    3 ай бұрын

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

  • @user-tr8gf7ob7o

    @user-tr8gf7ob7o

    3 ай бұрын

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

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

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

  • @SekaChan

    @SekaChan

    Жыл бұрын

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

  • @fuwafuri

    @fuwafuri

    Жыл бұрын

    ありがとうございます

  • @60_daysff_per_year
    @60_daysff_per_year11 ай бұрын

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

  • @user-hy7zy5ll1u
    @user-hy7zy5ll1u3 ай бұрын

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

  • @SekaChan

    @SekaChan

    3 ай бұрын

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

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

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

  • @SekaChan

    @SekaChan

    Жыл бұрын

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

  • @user-jc4vk1qt2w

    @user-jc4vk1qt2w

    Жыл бұрын

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

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

    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

    Жыл бұрын

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

  • @daimonion209

    @daimonion209

    Жыл бұрын

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

  • @wcnv
    @wcnv8 ай бұрын

    四章もありがとうございます^^ 三章のご返信も、見進めていったら仰っていることがわかりました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

    8 ай бұрын

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

Келесі