ちょっと長くなりそうだったのでエントリ立て。
interfaceに物申すのself コメント:
interface I商品 {
int 売値();
}
interface I売りもん : I商品 {
int 原価();
}
とかやっといて、商店は I売りもん をもってるけど、
お客さんには I商品 として見せろ。
ってーことかしら。
なんか直接的じゃないんだよなー...
八百屋さんはりんごを I売りもん として扱います。
class りんご : I売りもん {
Color 色() { ... }
}
お客さんには値段しか書かれていない真っ黒な袋に入った
I商品として見せろって?
じょーだんじゃない、お客は りんご が欲しいんだ。
ではこれは?
interface I商品 {
int 売値();
}
interface I売りもん {
int 原価();
}
// 店頭に並べるりんご: 色と売値を公開。
interface Iりんご : I商品 {
Color 色();
}
// 八百屋が仕入れたりんご。店頭に並べるが原価はナイショ
class 売りもんのりんご : I売りもん, Iりんご {}
こうすれば八百屋さんはお客に Iりんご を提供できます。
んが、I売りもん と I商品 が泣き別れてます。
これもちょっと考えにくいつか許容し難いつか。