关于《JAVA与模式》中,“工厂方法”模式的特大疑问?!
在农场系统例子中,如何调用Apple,Grape类中的SET/GET方法?是不是作者错了?
Apple和Grape类实现了Fruit接口,按照作者的意思,应该如下调用:
public class a
{
public static void main(String[] args)
{
FruitGardener a=new AppleGardener();
a.factory().“这里如何调用SET/GET方法?返回的是Fruit类型呀,难道要强制转换?”;
}
}
------解决方案--------------------做接口就是忽略相异只考虑共同方法,如果要个别对待还是要做强制转换的
------解决方案--------------------FruitGardener a=new AppleGardener()
a.factory()
new AppleGardener()返回一個AppleGardener類型的對象,賦值給FruitGardener(傳第的是一個 引用),這裡是 "上傳 ".
對象類型自動變化成基類的類型,但此時在a的實際對象是個AppleGardener
類型的.a.factory(),調用的是AppleGardener類的方法,返回值為Apple類型的對象.