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

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

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

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

Q&A

解決済

1回答

854閲覧

godot engine 継承関係と親子関係の違いなどについて

blendegg

総合スコア81

継承

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

0グッド

0クリップ

投稿2019/05/07 03:06

###聞きたいこと
godotというpython風味のゲームエンジンがあるのですが、継承について疑問があります
###疑問
リファレンスを見てもらうとわかるのですが、nodeというクラスはobjectを継承しています。これはnodeはobjectの持つ機能をすべて継承しているということでしょうか?
https://docs.godotengine.org/en/3.1/classes/class_node.html#class-node
単なる親子のような関係で、機能の継承はないのでしょうか?

子が勝手に親の機能を継承していたら、すべてのクラスは同じ機能を持つということになると思いますが、、、

マイナーなゲームエンジンですが、わかることがあれば教えてください。

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

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

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

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

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

guest

回答1

0

ベストアンサー

godotを使ったことがないので一般的な継承の説明として回答します。

リファレンスを見てもらうとわかるのですが、nodeというクラスはobjectを継承しています。これはnodeはobjectの持つ機能をすべて継承しているということでしょうか?

基本的には仰っている通りです。
言語によってはprivateなメンバは継承されないこともあります。

単なる親子のような関係で、機能の継承はないのでしょうか?

「単なる親子のような関係」がどういう関係かわかりませんが、「機能の継承」はあります。
(機能=メソッド?)

子が勝手に親の機能を継承していたら、すべてのクラスは同じ機能を持つということになると思いますが、、、

たしかに子クラスは親クラスの機能を(privateを除いて)全て使うことができますが、
親クラスは子クラスの機能をすべて使うことはできません。

子クラスは親クラスを拡張して作られることがほとんどです。
親クラスは拡張された子クラスの機能を使うことができないので、「全てのクラスは同じ機能を持つ」ということにはなりません。
また、親子関係は 1:1 ではなく 1:多 なので、似たような機能はあれど全てが同じにはなりません。

投稿2019/05/07 03:30

dice142

総合スコア5158

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

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

blendegg

2019/05/07 08:11

なんとなく、親は子すべての機能を使えるものだと思っていたのですが、逆ですか? 親クラス 子クラス 孫クラス があったとしたら 親クラス>子クラス>孫クラスという継承関係になるはずです おそらく、子クラス特有の機能というのもあると思います 親クラスは子クラスを継承できないから、親がすべての機能を使えるわけではないということでしょうか? 逆に、孫はその特有の機能を継承できるかと思います。
dice142

2019/05/07 08:30

> なんとなく、親は子すべての機能を使えるものだと思っていたのですが、逆ですか? 大事なところなのでなんとなくからちゃんと理解できるようにした方がいいですね。 回答にも書いた通り、逆です。 継承とは「親の機能を子が受け継ぐ」ものです。 子の機能を親が受け継ぐことはありません。 > 親クラス>子クラス>孫クラスという継承関係になるはずです この表記が大小関係であるなら間違いです。 子クラスの方が親クラスの機能+αを持つので、大小関係で言えば「親クラス<子クラス」です。 ちなみに、「>」が矢印(→)の意味合いでも間違いです。 一般的に「親クラス←子クラス」のように継承先から継承元に矢印が向かうように書きます。 (説明の仕方によっては矢印が逆のこともあるのでそこは文章から読み取る必要もありますが。) > 親クラスは子クラスを継承できないから、親がすべての機能を使えるわけではないということでしょうか? > 逆に、孫はその特有の機能を継承できるかと思います。 そうですね。 親クラスをベースとして子クラスが作られるので、親クラスは子クラスをベースにはできません。 おっしゃる通り、子クラスを更に継承した孫クラスでは子クラスの機能を継承できます。
blendegg

2019/05/07 09:52

ありがとうございました じゃあ機能が遺伝していくようなもんですね
dice142

2019/05/07 09:59

その感覚の方が近いですね。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問