![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
インターフェースとトレイトってどっちが正義なんですか?
インターフェースを利用するとそのクラスのように使えるので、関数の引数として別のクラスを同じように使うことが出来ます。
トレイトを利用するとそのクラス内で実装されているようにメソッドを利用できるので、カプセル化の観点から言えばこちらが有利ですが、正直コードの可読性を下げると思います
![](http://oshiete.xgoo.jp/images/v2/common/profile/M/noimageicon_setting_10.png?e8efa67)
- 画像を添付する (ファイルサイズ:10MB以内、ファイル形式:JPG/GIF/PNG)
- 今の自分の気分スタンプを選ぼう!
あと4000文字
A 回答 (1件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
PHPとかのお話でしょうか?
トレイトはクラス間をまたがった共通できるロジックを用意するだけであり、
インターフェースとは全く別物ですよ。
インターフェースはクラスの実態を利用元が意識する必要がなく、インターフェースで定義された状態や操作だけで利用元がコントロールできるものです。
インターフェースを実装した時点で、こちらもカプセル化は行えます。
トレイトはインターフェースや抽象クラスの代わりではなく、クラスを構成するにあたって横断的に必要となるコードを実現するにあたっての補助役という位置づけで考えた方がよいです。
意味もなく乱用すると保守性に問題を引き起こす場合があります。
あまりよくありませんが、なんらかの理由でどうしてもクラスの相関関係を崩せない時とかに利用するとか。
継承関係では解決できない、特定のクラスに依存しないけど、何度も同じことを書く横断的な関心ごととかに利用するとか。
ここが分かりやすいです。
https://www.infiniteloop.co.jp/tech-blog/2014/08 …
まずはクラス設計を適切に行うことが大事で、便利だからといって、いつでも考えなく積極的に利用するものではありませんね。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) pythonのプログラムについての質問です。 1 2023/05/26 10:31
- ネットワーク プロトコルの階層化とインターフェースとの違い 2 2022/07/26 02:38
- その他(プログラミング・Web制作) プログラムの起動、利用について、使用期間を設定する方法 3 2023/08/06 21:03
- その他(コンピューター・テクノロジー) ChatGPTは井の中の蛙大海を知らずですか。 5 2024/05/25 21:25
- その他(セキュリティ) Yahoo! JAPANのID取得について 1 2022/11/30 23:00
- クレジットカード セゾンクレジットカードの支払い忘れ 6 2023/06/12 06:32
- Java オブジェクト指向プログラミングの実践本を紹介してください 3 2022/09/19 04:56
- その他(プログラミング・Web制作) Pythonで複数のメソッドをまとめて管理する方法について 1 2023/03/30 00:01
- その他(セキュリティ) 警視庁が家庭用ルータ不正利用 注意喚起 どこまで設定を変更すれば安全か? 2 2023/03/28 19:22
- クレジットカード クレジットカードの不正利用に気付きました。 久しぶりにクレジットカードの明細をチェックすると、身に覚 4 2024/06/26 15:46
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
インターフェースとトレイトっ...
-
C# 「データが失なわれる可能性...
-
メソッドの引数にクラス名を渡す
-
【C#】抽象クラスでコンパイル...
-
interface,extend,implementの...
-
(vba)他のアプリケーションの右...
-
デバックログの出し方
-
Javaのインスタンス化の構文の...
-
VBがオブジェクト指向言語でな...
-
C++で参照カウンタを実装したい...
-
c++でのヘッダーファイルの循環...
-
抽象クラスをJUNITでテストする...
-
「タイプ初期化子が例外をスロ...
-
エクセルVBAで、条件に一致する...
-
VB.NET getとsetの概念がわかり...
-
C# インスタンスの破棄
-
変数名の付け方
-
パワーポイントのVBAでテキスト...
-
private static という変数の修飾
-
配列の重複する値とその個数を...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
interface,extend,implementの...
-
C# 「データが失なわれる可能性...
-
「ラッパークラス」の存在意義...
-
c++でのヘッダーファイルの循環...
-
(vba)他のアプリケーションの右...
-
「継承されたメソッドの可視性...
-
「IOException は対応する try ...
-
ゲッターを使わないで変数にア...
-
JavaでのAPIの覚え方ってみさな...
-
VB DLLプロジェクトについて
-
Javaで下線
-
【C#】クラスのコンストラクタ...
-
Javaのインスタンス化の構文の...
-
委譲って何ですか?
-
ASP.NETでの共通コードの書き方...
-
オーバーライドとラッパーの違い
-
抽象クラスをJUNITでテストする...
-
JTextFieldの入力制限
-
Commons-Discovery.jarとは?
-
setTextについて
おすすめ情報