
A 回答 (1件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
PHPとかのお話でしょうか?
トレイトはクラス間をまたがった共通できるロジックを用意するだけであり、
インターフェースとは全く別物ですよ。
インターフェースはクラスの実態を利用元が意識する必要がなく、インターフェースで定義された状態や操作だけで利用元がコントロールできるものです。
インターフェースを実装した時点で、こちらもカプセル化は行えます。
トレイトはインターフェースや抽象クラスの代わりではなく、クラスを構成するにあたって横断的に必要となるコードを実現するにあたっての補助役という位置づけで考えた方がよいです。
意味もなく乱用すると保守性に問題を引き起こす場合があります。
あまりよくありませんが、なんらかの理由でどうしてもクラスの相関関係を崩せない時とかに利用するとか。
継承関係では解決できない、特定のクラスに依存しないけど、何度も同じことを書く横断的な関心ごととかに利用するとか。
ここが分かりやすいです。
https://www.infiniteloop.co.jp/tech-blog/2014/08 …
まずはクラス設計を適切に行うことが大事で、便利だからといって、いつでも考えなく積極的に利用するものではありませんね。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
「ラッパークラス」の存在意義...
-
メソッドの引数にクラス名を渡す
-
抽象クラスのエラーが出ます
-
ASP.NETでの共通コードの書き方...
-
private継承はどう使う?
-
Strutsのバージョンアップによ...
-
「継承されたメソッドの可視性...
-
「タイプ初期化子が例外をスロ...
-
中学のクラス数
-
eclipse-Tomcatでのデバッグに...
-
【sendkeysメソッドが動かずに...
-
JavaScriptからJAVAクラスを呼...
-
Java リフレクションについて
-
リフレクション
-
javascriptからjavaを呼び出したい
-
FEM解析の読み方は?
-
Excelで =EMBED("Acrobat Docu...
-
UMLのクラス図はmain()も含むん...
-
エクセルVBAで、条件に一致する...
-
パワーポイントのVBAでテキスト...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
(vba)他のアプリケーションの右...
-
ASP.NETでの共通コードの書き方...
-
オーバーライドとラッパーの違い
-
「継承されたメソッドの可視性...
-
C# 「データが失なわれる可能性...
-
メソッドの引数にクラス名を渡す
-
ゲッターを使わないで変数にア...
-
C#からDLLを呼びたいのですが・...
-
c++でのヘッダーファイルの循環...
-
interface,extend,implementの...
-
抽象クラスをJUNITでテストする...
-
Javaのインスタンス化の構文の...
-
【C#】クラスのコンストラクタ...
-
Excel vbaのプログラムでガンマ...
-
VB DLLプロジェクトについて
-
単体テストのテストケースにて...
-
デバッグ時に「Source not found」
-
「ラッパークラス」の存在意義...
-
Commons-Discovery.jarとは?
-
Ftpでの帯域制限の設定方法につ...
おすすめ情報
知ったかやめて