#7
by 結城紬 » 6年前
高山さん
やはりといいますか、どうもクラスとか継承とかという概念を根本的に誤解されているのではないかと思います。
単に似たようなものをまとめるとか、テンプレート(C++のではなく、一般的な意味として)のようなものと思っていらっしゃるのではないですか。そういった用途に継承を使うのは明らかに間違った使い方です(というのが最初の回答です)。
関数の定義漏れにコンパイルエラーを出すだけが目的なら、継承を使う必要は全くありません。というより、「継承をしない」という選択肢が存在する以上、何の保証をすることもできません。
A, B, ..., X というクラスがあり、それぞれ内部的に 1 か 2 という名前の似たような処理をする。しかし、1, 2 はそれぞれのクラスが内部的に使うだけで、外部の誰からも呼ばれない。
以上の条件から読めることは、A, B, ..., X のクラスは、内部的にやっていることが微妙に似ているが、外部から見ると全く無関係であり、ということはいかなる継承関係も持たないというのが正解です。
usao さんの質問は、「もし継承関係を持つとすれば、1, 2 を呼ぶ外部の存在があるはずなのですが、それは何で、どのように使うのですか?」ということだと思いますが、それを踏まえて高山さんからの回答をお願いできますでしょうか。
高山さん
やはりといいますか、どうもクラスとか継承とかという概念を根本的に誤解されているのではないかと思います。
単に似たようなものをまとめるとか、テンプレート(C++のではなく、一般的な意味として)のようなものと思っていらっしゃるのではないですか。そういった用途に継承を使うのは明らかに間違った使い方です(というのが最初の回答です)。
関数の定義漏れにコンパイルエラーを出すだけが目的なら、継承を使う必要は全くありません。というより、「継承をしない」という選択肢が存在する以上、何の保証をすることもできません。
A, B, ..., X というクラスがあり、それぞれ内部的に 1 か 2 という名前の似たような処理をする。しかし、1, 2 はそれぞれのクラスが内部的に使うだけで、外部の誰からも呼ばれない。
以上の条件から読めることは、A, B, ..., X のクラスは、内部的にやっていることが微妙に似ているが、外部から見ると全く無関係であり、ということはいかなる継承関係も持たないというのが正解です。
usao さんの質問は、「もし継承関係を持つとすれば、1, 2 を呼ぶ外部の存在があるはずなのですが、それは何で、どのように使うのですか?」ということだと思いますが、それを踏まえて高山さんからの回答をお願いできますでしょうか。