インタフェースの実装方法やメリット、抽象クラスとの違い【Java入門講座】4-8 インターフェース
【初心者向けJava入門講座】4-8 インタフェース の授業動画です。
インターフェースの実装方法や使うメリットを解説!抽象クラスとの違いも分かります😄
⭐無料&楽しく勉強できる場所を作りたい!そんな想いで授業動画を作ってます😁
→チャンネル登録/高評価/周りにオススメ で応援してもらえると嬉しいです✨✨
🌸チャンネル登録はこちら!
kzread.info?su...
📙授業ノートはこちら!
bit.ly/3m82hKA
📄プログラムはこちら!
bit.ly/3F6D8XS
👀関連動画はこちら!
▼前の動画
• ポリモフィズムとは何か、使い方やメリットをコ...
▼次の動画
• パッケージの使い方、超便利なコンパイル・実行...
▼授業動画の一覧
• 独学でJavaプログラミングをマスター!初心...
💡チャプター
00:00 オープニング
00:16 今回のテーマ
00:58 インタフェース
04:20 抽象クラスとの違い
07:18 サンプルプログラム
🙋♂️プロフィール
【せかチャン 菅原】
・東京工業大学大学院 情報理工学研究科 卒業
・大学生、大学院生のときに5年半塾講師
・IT研修講師として情報技術、プログラミングのセミナーを企画・実施
・Oracle社より「Instructor of the Year(満足度日本一)」「Java講師賞」を4年連続受賞
「分かった!」と言ってもらえる瞬間、勉強を楽しいと感じてもらえる瞬間が好きです。
フリーラーニング(無料で学べる場)を広げたいと思ってKZreadをはじめました。
一緒に楽しく勉強&成長していきましょう!
📳Twitter
/ sekachanit
🎵音源提供
DOVA-SYNDROME
dova-s.jp/
※動画によっては使用していない場合があります
#Java #プログラミング #せかチャンのJava入門講座 #せかチャン
Пікірлер: 54
分かりやすすぎて鼻血出そう Java研修で困ってた内容なので大変助かりました🙇🙇
@SekaChan
2 ай бұрын
ここは難しいですよねー この先Webアプリ講座やDB講座なども公開してるので、また分からなくなったら鼻に詰めるティッシュを用意して戻ってきてください😂
半日調べてもわからなかった抽象クラスとインターフェースの使い分け方が3分で理解できて感動しました✨ ありがとうございます。
@SekaChan
2 ай бұрын
抽象クラスとインタフェースの使い分けはなかなか難しいですよね。 この動画が役に立ったみたいで良かったです😄
明日javasilverの試験んだああ
@SekaChan
14 күн бұрын
勉強してきた成果を100%出し切ってきてくださいいい✊
@user-yz9nx6ym1b
11 күн бұрын
@@SekaChan 62パーでしたw
@SekaChan
8 күн бұрын
@@user-yz9nx6ym1b そんなああ‥
Java初心者です。 とってもわかりやすいですが、難しく感じるところなので何回も動画見返したいと思います!
@SekaChan
2 жыл бұрын
にくまんさん、こんにちは! コメントありがとうございます😀 たしかに、インタフェースは難しいですよね💦 Java入門講座6章までのうち、一番ややこしいのが4-6~4-8かなと思います。 動画を見返してもらって、もし分からないことがあれば聞いてください✨
ホワイトボードの字綺麗すぎます! 見やすい😮
@user-nu2ko9et6y
11 ай бұрын
枝を張る、色を塗るとか専門的な単語では分かりにくい概念をうまく表現されていて、とも分かりやすかったです。
@SekaChan
11 ай бұрын
ロレムさん、コメントありがとうございました! ホワイトボードは少しでも分かりやすさにつながればと思って、超ゆっくり丁寧に書いてます😄 インタフェースは難しく感じる人が多いので、概念がうまく伝わって良かったです!
インタフェースの質問の件、課題にありました。解決しました、すみません。
現在SESプログラマーですが、教えるのが好きでプログラミング講師業考えてます。いつも勉強になります。
@SekaChan
2 жыл бұрын
ねもてぃーさん、こんにちは。 コメントありがとうございます! 講師業は楽しいですよ😄教えるのが好きな人は向いてると思います。 準備にはものすごーく時間がかかりますが、僕はその時間が結構好きなんですよね✨ 講師業の面でも何か気になることがあれば、遠慮なく聞いてください!
@user-ef8mp2hg3p
2 жыл бұрын
@@SekaChan さん ありがとうございます! 何かありましたら相談させていただきます🙇♂️
他言語で業務アプリの開発を行っております。 Javaは今回初めてです。 とてもわかりやすく、ここまで継続できています。ありがとうございます。 インタフェースについて教えてください。 「Person」から継承された「Student」に「Englishable」を実装する場合、 どのように記載するのでしょうか、教えてください。 白板でのご説明のイメージです。
@SekaChan
2 жыл бұрын
Tm Mtさん、コメントありがとうございました! 多言語で開発してるのにJavaも勉強してるってスゴイですね✨ インターフェースについて、疑問が解決したみたいで良かったです! 他の人がこの質問を見たときのために書いておくと‥ > class Student extends Person implements Englishable となりますね。
動画内でお話しされたインターフェースの使い方って、抽象クラスを使っても出来るんではないですか?イマイチ違いがわからなかった、、
クラス二つ以上出ると大変だがなんとかする
いつもわかりやすい動画をありがとうございます^^ 初歩的な質問失礼します😅 インターフェースはよく現場で使うと思うのですが、どのような現場で使われるか知りたいです! 少しイメージがわきづらくて… 具体例などがあるとより理解が深まるなと思い… お忙しいとは思いますがよろしくお願いします❗
@SekaChan
Жыл бұрын
やきちーず@エンジニアになる人さん、コメントありがとうございました! 本当は現場で使われるレベルの具体例を話せたら良かったのですが、ここまでの講座内容だけで理解してもらえる例を考えたところ動画内で話した例えが精いっぱいでした‥ (現場レベルではありませんが)4章最後の演習でインタフェースを使う問題を用意してあるので、そちらのプログラムも見てもらうと参考になるかなと思います。 なお、6章のクラスライブラリやデザインパターンまで進めると、インタフェースの本質や具体例に触れられますよ😄
インターフェイスと抽象クラスの違いはわかるのですが、使い分けがわかりづらくて、、 こう言う場合はインターフェイス。 こう言う場合は抽象クラスを使う。みたいな使い所の違いって何ですか?
@SekaChan
Жыл бұрын
ららさん、コメントありがとうございました。 インタフェースと抽象クラスの使い分けは、(5:08以降の説明と被ってしまいますが)クラスやインタフェースをどのように組み合わせてシステム全体を作っていきたいかによりますね😄 そのインタフェース・抽象クラスだけを見たらどちらでも同じような機能を作れるんですが、他のクラスとの関連性を考えるとどちらがより適しているかが分かりやすいかなと思います。
インタフェースは4行目があった場合も抽象メソッドですかね。
Englishableインターフェースの3行目のvoid display();はなくても実行できるのですが、これを入れる意味はなんでしょうか?教えていただけると幸いです。
@SekaChan
2 жыл бұрын
暇潰しの動画日記さん、コメントありがとうございました。 Englishableインタフェースの3行目に void displayEng(); を入れることで、(Englishableインタフェースを実装している)StudentクラスとBaseballクラスに displayEng()メソッドの定義を強制させることができます。 実際の開発現場では作るクラスがたくさんあり、エンジニアごとに分担することがほとんどなんですね。 そのとき、StudentクラスとBaseballクラスの作成者に「displayEng()メソッドを作ってね」と伝えた(仕様書に書いた)だけでは、実際に作ってくれる保証はありません。 そこで、Englishableインタフェースを実装する形にしておけばdisplayEng()メソッドがないとコンパイル時点でエラーになるため、メソッド定義を強制させることができます😄
@user-vn6fg8wm5l
2 жыл бұрын
@@SekaChan なるほど、、 抽象クラスを継承した時と同じということですね! コメント一つにここまで丁寧に返してくれて本当に嬉しく思います。現在、Javaの職業訓練校に通っており、復習がてらせかチャン見てます!学校の先生よりわかりやすくて最高です!今後もよろしくお願いします。
いつもお世話になっております。質問させてください。4:49あたりで、抽象クラスは、ひとつしか継承できないんでしょうか?複数のサブクラスを持つことができませんか?
@SekaChan
8 ай бұрын
prob apriさん、コメントありがとうございました。 (抽象クラスかどうかにかかわらず)継承できるクラスは1つだけですね。また、複数のサブクラスを持つことはできます。 例えば、クラス定義で > class Baseball extends Club > class Football extends Club のように、「extends ~」の「~」に指定できるクラスは1つだけです。 またこの場合、Clubクラスは複数のサブクラス(BaseballとFootball)を持っています。
@probapri5708
8 ай бұрын
サブクラスの方から見て、継承できる(している)クラスは1つだけというのですね。😀@@SekaChan
質問失礼いたします。 System.out.println(English.LANGUAGE);のところで、LANGUAGEの場所に定数にした[英語]が入るのは分かったのですが、実行した際にEnglishable.英語と表示されないことに疑問を持ちました。 勉強し始めてまだ日が浅いため初歩的な質問で大変恐縮なのですが、お答えをいただけたら幸いです。 よろしくお願いしたします。
@SekaChan
2 жыл бұрын
K Seinoさん、質問コメントありがとうございました! 初歩的な質問でも全然OKですよ😄 むしろ、勉強し始めて日が浅いのにインタフェースを学んでるのはスゴイなぁと感じました! 変数(定数)を参照するとき、自クラスにある場合は「変数(定数)名」だけで使えます。 他クラスの変数(定数)を参照する場合は、どのクラスの?を知らせるために「クラス名.変数(定数)名」と書く必要があるんですね。 Student7.javaのdisplayEng()において、「name」は自クラスにあるので【name→Mike】と置き換わります。 「LANGUAGE」はEnglishableにあるので【Englishable.LANGUAGE→[英語]】と置き換わります。 「Englishable.LANGUAGE」全体で「EnglishableのLANGUAGE」という意味の1つの定数だと考えてください✨
@kseino1493
2 жыл бұрын
@@SekaChanなるほど、なんとなくですが理解できました!ありがとうございます!
フィールドって引数のことですか??
Javaを使ったポートフォリオを作りたいので、一通り復習しているのですが イマイチ現場での使われ方?が想像できない。。経験者からみた未経験のポートフォリオの企画ってどんなところを見ているのでしょうか。
@SekaChan
11 ай бұрын
コメントありがとうございました。 それぞれの会社や人事担当者によって、人材の評価基準(何を重要視するか)は変わりますからね。 ポートフォリオをどう使うかも、見る人によって変わる気がします。
初コメントで質問失礼いたします。 StuSample7クラスとStudent7クラスについてなのですが、StuSample7内でStudent7型のクラスを生成していると思うのですが、StuSample7とStudent7には直接的なつながりがないのにStuSample7クラスはStudent7型がどのような方をしているのかわかっている振る舞いをしている気がします。StuSample7はStudent7を継承も実装もしていないのに何故Student7がどんな型をしているのか分かるのでしょうか? eclipseでコードを書く場合、同じsrcファイル?同じパッケージ?に入っているならば別のjavaファイルでクラスを定義しても中身は共有されているということなのでしょうか?
@SekaChan
6 ай бұрын
StuSample7クラスからStudent7クラスの情報が分かるのは、2つのクラスファイルが同じフォルダ(パッケージ)の中に入っているためですね。 Student7クラスを利用するときはStudent7.classを参照するのですが、このとき、StuSample7.classと同じフォルダ内を探しにいく仕組みになっています。 仮にStudent7.classを別のところに移動すると、StuSample7はコンパイルも通らなくなりますね。
継承の 「extends 〇〇」と、実装の「implements ◇◇」の併用は可能ですか?また、二つのインターフェースを一つのクラスに同時に実装できるか、教えていただきたいです
@SekaChan
Жыл бұрын
かとうともきさん、コメントありがとうございました! 継承と実装の併用・複数のインタフェースの実装は、両方とも可能ですよ👍 もしクラスAを継承して、インタフェースBとインタフェースCを実装したい場合は 「class クラス名 extends A implements B, C」 と書きますね(extends→implementsの順番です)
Englishableのインターフェースは、実装したクラスにdisplayEng()の定義を強制させるという意味があるのが理解できました。実際に、BaseballクラスでdisplayEng()を定義しなかったらエラーになりました。 EnglishableのインターフェースのLANGUAGEがよくわからなかったです。 BaseballクラスでLANGUAGEを使用しなくても、エラーにはならなかったです。
@SekaChan
2 жыл бұрын
ニコルさん、コメントありがとうございました。 インターフェースは実装したクラスにメソッドの定義を強制させるものですね。 一方、インターフェース内に定数を定義しても、そのインターフェースを実装したクラスに影響を与えることはありません。 クラスからその定数を利用しても良い(しなくても良い)、というイメージですね🍀
動画とても分かりやすかったです。自分で他に勉強している時の質問です。インターフェイスを別のクラスで扱う時に、インプリメンツがなく、インターフェイス型?のメンバ変数とインターフェイスのメソッドをオーバーライドしたものが記載されたプログラムではどうなっているのでしょうか?インターフェイスはリポジトリーでクラスはサービスでした。 質問がふわっとしていて申し訳ありませんが、よろしくお願いします。
@SekaChan
Жыл бұрын
D-アラニルD-アラニンさん、コメントありがとうございました! せっかく質問をくれたので回答したい気持ちはあるんですが‥すみません。何を聞かれているのかが分からないです🙏 「インターフェイス型のメンバ変数」とあるので、おそらく何かのインターフェイスを実装したクラスのオブジェクトをメンバ変数として持っているようですね。 また「他に勉強しているときの質問」ということで、もしできるようなら、その教材?を扱っている方に直接質問してもらう方がより明確な回答をもらえる可能性が高いかなと感じました。
PHP、SQLにも興味があるんですが流石に扱わないですよね?
@SekaChan
3 ай бұрын
PHPはリクエストが少ないのでまだ手付かずですが、SQLはこちらの動画で解説してますよ😄 ●【有料級】JavaでDB接続するJDBCプログラミングを完全解説 kzread.info/dash/bejne/qalou6V9qa2sgMo.html
@user-ky9gu5xx8e
3 ай бұрын
@@SekaChan ありがとうございます。 神すぎる! 無料でこの授業はエグすぎますよ~。 本当に有料レベル
インターフェイスはすべてメソッドが抽象化されている場合で、抽象クラスを継承する場面での抽象化クラスって、一部のメソッドは抽象化メソッドなく具象メソッドで、派生クラスではそれらのメソッドを使用できるという私の認識なのですが、この動画の説明は「枝を張る」とかの例えを早口で言っていて違いがわからなかったです。
@nakohama1705
5 ай бұрын
Java8から言語拡張されインタフェースでdefaultメソッドを使えるようになってます。ですので、インターフェイスでもdefaultキーワードを使用することで具象メソッドが記述できるかと.