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

回答編集履歴

2

追記

2018/06/23 10:58

投稿

Chironian
Chironian

スコア23274

answer CHANGED
@@ -22,4 +22,9 @@
22
22
 
23
23
  これは、「インターフェース」という仕組みを持つ言語における通常のクラスを継承する場合とインターフェースを継承する場合の差の話です。mr0237さんの質問を見る限り、クラスの継承とインターフェースの継承を比較されているようには見えませんので、このデメリットは現在の質問の主旨のデメリットには該当しないと思います。
24
24
 
25
- インターフェースにより使い方を統一し、それを強制することのデメリットは、それが必要な場合にはあまりないように思います。
25
+ インターフェースにより使い方を統一し、それを強制することのデメリットは、それが必要な場合にはあまりないように思います。
26
+
27
+ ---
28
+ 【追記】
29
+ ところで、一般的なインタフェースは「①定数 ②メソッド名」という形式の定義ではありません。
30
+ 多くの場合「メソッド名とシグニチャ」を定義します。シグニチャは当該メソッドの「戻り値の型、引数の型の並び」を定義する言語が多いです。`int foo(int, short, string);`などですね。

1

typo修正

2018/06/23 10:57

投稿

Chironian
Chironian

スコア23274

answer CHANGED
@@ -3,7 +3,7 @@
3
3
  > そもそも「ルールを強制させる為にインターフェース使うぞ!」とは思えないはずです。
4
4
 
5
5
  そんなことは全くありません。ルールを強制させるためにインターフェースを使います。
6
- これにより、間違ったルールでクラス・メソッドを呼び出そうとした時、処理系がエラーを報告するので間違いに早期に気がつくことができます。その御蔭で、そのような間違いを犯していないかのテストを省略でき、プログラムの信頼性を保ちつつ納期を短縮できます。
6
+ これにより、間違ったルールでクラス・メソッドを呼び出そうとした時、処理系がエラーを報告するので間違いに早期に気がつくことができます。その御蔭で、そのような間違いを犯していないかのテストを省略でき、プログラムの信頼性を保ちつつ納期を短縮できます。
7
7
 
8
8
  また、同じような機能を持つクラス毎に使い方が一々異なっていると面倒極まりないです。それらのクラスが同じインタフェースを継承していることが分かれば、使い方も同じであることが分かりますから、使う側にとって非常に楽になります。
9
9