は想像:
public class CarFactory {
Car giveMeACar() { ... };
}
public class SpecialCarFactory extends CarFactory {
@Override
Object giveMeACar() {
return "hello world";
}
)
public class Driver {
void drive() {
CarFactory carFactory = new SpecialCarFactory();
Car car = carFactory.giveMeACar();
// err, wait, sorry, can't do that.
// This car factory, despite its name, doesn't produce cars.
// It produces objects, and I've heard they're just
// "hello world" strings. Good luck driving a "hello world"
// string on a highway!
}
}
を参照してくださいが、それだけで契約のことです。あなたがコーヒーショップに行くとき、あなたはコーヒーを売ることを期待しています。この契約に準拠していない場合、「コーヒーショップ」と呼ばれることはありません。コーヒーショップはコーヒーを売る必要があります。 搾乳されたコーヒーはまだコーヒーですので、搾乳したコーヒーを売ることができます。 (トヨタ車ですので、ちょうど自動車工場のように、唯一のトヨタを生成することができ、そしてあなたも、それはトヨタです知らなくても、他の車、のようにトヨタをドライブすることができます:それは多型です)。
@KevinEsche、それはかなり正確ではありません。メソッドをオーバーライドして、サブクラスを返すことができます。なぜ – shmosel
@shmoselはええyou're右私の悪い – SomeJavaGuy
チュートリアルでは、すでに説明:_However、オブジェクトは必ずしも数値ではありません - それは、クライアントの文字列または別のtype._ – Joni