質問するログイン新規登録

Q&A

解決済

2回答

886閲覧

継承元を抽象メソッドにするか、仮想メソッドにするか意見をください

JrMogura

総合スコア14

オブジェクト指向

オブジェクト指向プログラミング(Object-oriented programming;OOP)は「オブジェクト」を使用するプログラミングの概念です。オブジェクト指向プログラムは、カプセル化(情報隠蔽)とポリモーフィズム(多態性)で構成されています。

継承

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

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

0グッド

0クリップ

投稿2020/06/22 14:45

0

0

前提・実現したいこと

Unityでゲームを作っているのですが、キャラのクラスで、抽象メソッドを使用するか、仮想メソッドにするか悩む部分が出てきました。
なるべくみんながミスなくコーディングでき、依存も少なくするには、どちらがいいか、意見を頂けますでしょうか。

コード例

Awakeから呼ばれるOnAwakeメソッドについて

抽象メソッドを使用した場合

class Base{ void Awake{ // 共通処理 // ... OnAwake(); } protected abstruct void OnAwake(); } class Abc : Base{ protected override void OnAwake(){ // 個別処理 // ... } }

◆メリット
継承元コードを追わなくても、OnAwakeの存在を意識できる
◆デメリット
今後OnAwakeを使用しない形になった場合に、全継承先を修正する必要がある

仮想メソッドを使用した場合

class Base{ void Awake{ // 共通処理 // ... OnAwake(); } protected virtual void OnAwake(){ } } class Abc : Base{ protected override void OnAwake(){ // 個別処理 // ... } }

メリット
継承先クラスは必要でなければOnAwakeを書かなくて済むので、
今後OnAwakeを使用しない形になった場合などに、修正が最小限になる
デメリット
継承元をちゃんと読まないと、OnAwakeの存在に気づけない

補足情報

単純にAwakeを継承する案もありましたが、base.Awakeの呼び出し漏れが怖いのでやらない方がいいかと考えました。また、実をいうと、個人的には仮想関数を使用する形の方がいいと考えていたのですが、「継承元に空メソッドを置くのが悪!」という話を聞いたので、怖くなって質問させていただきました。

以上になります。よろしくお願いします。

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

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

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

guest

回答の取得に失敗しました

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

ただいまの回答率
85.25%

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

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

質問する

関連した質問