お世話になります。
現在独学でJavaを学んでいるのですが、
『継承』のところでつまずいてしまいました。
参考書を元に継承の章を読んでいたのですが、
まず頭に浮かんだのは、
「継承をする意味は?」ということです。
継承をすることとしないことで何が違うのか。
また、必ず継承を行わなければならないような場面というのはあるのでしょうか?
特にSwingアプリケーションを作成していくと、
継承しないコードと継承したコードで記述ががらっと変わる気がしますが、
動作的に同じであればどっちでも良いのではないのか?というのが、
私の意見です。
この部分についてわかり安く説明している書籍やHPなどがありましたら
教えていただければ幸いです。
No.1ベストアンサー
- 回答日時:
(・∀・)ドモ
継承は、
同じ属性を持つものにプラス要素を付けたいときに
使えばよいと思います☆
例えば、
・・・んーと。
携帯電話があります。
これは、機種によって様々です。
しかし、元を突き詰めてみると・・・・
・電話が出来る
・メールが出来る
・日付が分かる
とりあえず、全部の携帯にあるのが当然ですよね?
これを電話クラスとします。
なので、コレをクラス設計に置き換えて考えると
同じパラメータを使うのに、最初から記述する必要はないと。。
同じ構造なら省こうってことです。
他に携帯の機能として、
ラジオが聞ける
ナビゲーション機能あり
ゲームが出来る
辞書がついてる
等など
これらは、元の電話というクラスに追加機能として加えられたもの
でも、だからと言って、
これらの機能が全て携帯についているわけでもない。
そう、元のクラスに+αをしただけです。
だから、元のクラスになっている電話クラスがないとこれらは
成り立たないとなります。
色々派生するために、元があって、継承がある
というのは駄目でしょうか?
あと、一応継承は、複数も可能です☆
携帯電話といえば、カメラ機能、テレビ機能なんてのもありますよね?
これは、テレビ、カメラと言った別のクラスも継承して利用できます☆
ってことで、こういう元のクラスがあると継承するだけでも新しいクラスが簡単に作成できる利点があります。
分かりにくい表現もある&長文でごめんなさいーww
早速の回答ありがとうございます。
簡単に考えると継承というのは同じ機能がもともとあるなら、
わざわざまた作らずに使いまわせば良いということと解釈しました。
危険なのは継承元のクラスが誤っているとサブクラスも誤った処理を行う可能性があるということでしょうか…
No.2
- 回答日時:
継承はテクニックのひとつで、間違って利用すると再利用性などを
欠如してしまう危険性があります。デザインパターンを勉強すると
より有効な使い方が理解できると思います。
継承でよく出てくる言葉に、「is a 関係」と「has a 関係」があります。
「is a 関係」は継承してよいとされ、「has a 関係」は継承ではなく、インプリメントで設計すべきとされています。
has a 関係 の例でいくと、「ハンドルと車」という関係が例にあげられ、
車クラスはハンドルクラスを継承するという設計をしてはいけない、
となります。
No.3
- 回答日時:
継承を「する」とか「しない」とか いうのはちょっと違うかな・・・という気がします。
少なくとも、あなたが何かJAVAでクラスを書いたとしたら、
それだけでもう「Object型を継承している」のですから。
どうしても理解できなければ、無理をして継承を使う必要はないと思いますよ。
上でも言いましたけど、暗黙の了解的に継承されたクラスを使っているはずですが(笑)
ただ、これから何本もプログラムを作っていると、継承させた方が楽な場合がだんだんわかってくると思います。
そのとき、継承を使えばよいのではないでしょうか。
なるほど、既にJavaでクラスを記述している時点で継承していることになるのですね。
そしてやはり、継承自体をしなければならないということはなく、
今後色々なプログラムを作成することで徐々に理解できると思ったほうが良いということなんですね。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 賃貸マンション・賃貸アパート 賃貸人の地位承継について 引っ越したばかりのマンション(去年の12月に建ったばかり)ですが、本日賃貸 4 2022/09/12 15:14
- 弁護士・行政書士・司法書士・社会保険労務士 管理費滞納債務の特定承継人への承継 6 2022/04/02 16:59
- 倫理・人権 なぜ「女系」ではだめなのでしょうか?本質的には「男系」と同じことではないでしょうか? 20 2023/05/15 21:28
- 世界情勢 ヘンリー王子に新たに子供が生まれたら、王位継承権はありますか? イギリス王家離脱 1 2023/02/02 17:28
- 高校 こちらの問題がわからなくて、教えて欲しいです、、、、 ナポレオン 1 世の死により,皇位継承権は〔 2 2023/07/28 18:48
- その他(暮らし・生活・行事) 親が低学歴で低収入で大変な体を酷使する仕事して、家に帰った世の中の文句ばかり言って、夫婦でお金のこと 5 2022/11/07 23:46
- 歴史学 日本では先祖の名前(姓でない方)の一字を継承し、中国・朝鮮では継承しない、という違いはどこから生まれ 6 2022/10/12 16:29
- 相続・遺言 元配偶者の子の相続権について 3 2022/07/27 20:39
- 歴史学 近世に詳しい方に質問です スペイン継承戦争って結局どちらが優勢のまま終わったのでしょう? まず戦争の 2 2022/05/04 00:33
- その他(悩み相談・人生相談) 回答者さんだったらどっちを選びますか?理由も教えてください! 貴方の身内の中で長年にわたり会社経営を 3 2022/09/23 20:11
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
抽象クラスをJUNITでテストする...
-
抽象クラスからオーバーライド...
-
JavaにListElement型ってあるん...
-
「ラッパークラス」の存在意義...
-
オーバーライドとラッパーの違い
-
C#からDLLを呼びたいのですが・...
-
vb.net 自作プロパティの削除に...
-
(vba)他のアプリケーションの右...
-
setTextについて
-
抽象クラスのエラーが出ます
-
委譲って何ですか?
-
単体テストのテストケースにて...
-
【C#】クラスのコンストラクタ...
-
JavaでのAPIの覚え方ってみさな...
-
オブジェクト指向の特徴
-
JTextFieldの入力制限
-
ASP.NETでの共通コードの書き方...
-
「インターフェイス」って何の...
-
「IOException は対応する try ...
-
Javaのインターフェイスの意味
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
interface,extend,implementの...
-
(vba)他のアプリケーションの右...
-
抽象クラスをJUNITでテストする...
-
「ラッパークラス」の存在意義...
-
ASP.NETでの共通コードの書き方...
-
JTextFieldの入力制限
-
「継承されたメソッドの可視性...
-
C# 「データが失なわれる可能性...
-
VB DLLプロジェクトについて
-
c++でのヘッダーファイルの循環...
-
【C#】クラスのコンストラクタ...
-
「IOException は対応する try ...
-
ファイルパスが取得出来ない(P...
-
メソッドの引数にクラス名を渡す
-
ゲッターを使わないで変数にア...
-
Javaのインスタンス化の構文の...
-
オーバーライドとラッパーの違い
-
vb.net 自作プロパティの削除に...
-
なぜインタフェースを使うのか?
-
VBがオブジェクト指向言語でな...
おすすめ情報