質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.47%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

継承

継承(インヘリタンス)はオブジェクト指向プログラミングに存在するシステムです。継承はオブジェクトが各自定義する必要をなくし、継承元のオブジェクトで定義されている内容を引き継ぎます。

Q&A

解決済

2回答

589閲覧

Javaの継承の使い方について

batc

総合スコア18

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

継承

継承(インヘリタンス)はオブジェクト指向プログラミングに存在するシステムです。継承はオブジェクトが各自定義する必要をなくし、継承元のオブジェクトで定義されている内容を引き継ぎます。

0グッド

0クリップ

投稿2021/04/04 03:29

Javaの継承の使い方について少しわからないことがあります。例えばBoyとGirlというクラスを作るとして、Boyを親としてGirlを子にするのか、Childクラスを親としてBoyとGirlを子にするのかがわかりません。また2番目の場合、Childクラスはプログラム内で使いません(インスタンス化しません)。子の型としてしか機能しないクラスを作ってもいいのですか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

継承で表現するなら、後者がよいと思います。

継承がなされるとき、そのクラス間には is-a 関係が成り立つのが一般的です。
is-a 関係とは、「B は A の一種である」という関係です。
ここでは、Boy は子供ですから、Childの一種と考えられます。
Girl も子供ですから、 Childの一種と考えられます。

しかし、 Girl は Boy の一種でしょうか?違います。

たとえ直接使わないクラスであっても、基底部分を定義する親クラスを作ることに問題はないでしょう。

投稿2021/04/04 03:38

編集2021/04/04 03:39
coolwind0202

総合スコア708

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

batc

2021/04/04 03:47

ありがとうございました。
seastar3

2021/04/04 04:01 編集

ついでながら、インタフェースはhas a関係で、例えば"The child has a toy"となりますね。 そしてtoyクラスは別枠で定義するわけです。Boyのtoyはなんとかで、Girlのtoyはなんとかと、なんとかを具体的に書くとジェンダーモラルに触れるかもしれないのでご想像願います。
batc

2021/04/04 04:49

(笑)
guest

0

BoyクラスからGirlクラスを作っても、変数やメソッドを上書き(オーバーライド)したり、追加したら動作すると思いますが、不自然です。Boyクラスの内容を変更したときにGirlクラスも影響を受けます。
したがって、humanクラスを継承したChildクラスを継承したBoyクラスとGirlクラスを作るのが自然でしょう。
インスタンス化しないChildクラスでも、共通の変数やメソッドを先に用意しておくことで、仕様の理解を助け、開発の手間が省ける利点があります。
Java言語に準備された様々なモジュールの階層構造がよい例です。

投稿2021/04/04 03:42

編集2021/04/04 06:07
seastar3

総合スコア2285

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

batc

2021/04/04 03:47

ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.47%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問