【发布时间】:2014-06-05 01:17:51
【问题描述】:
给定一个接口:
public interface GoAlgorithm
{
public void go();
}
实现接口的类:
public class GoByFlyingFast implements GoAlgorithm
{
public void go()
{
System.out.println("Now I'm flying FAAAAST. Woo-hoo!");
}
}
一个抽象类
public abstract class Vehicle
{
private GoAlgorithm goAlgorithm;
public Vehicle()
{
System.out.printf("A new vehicle has entered the race! \n");
}
public void setGoAlgorithm(GoAlgorithm algorithm)
{
this.goAlgorithm = algorithm;
}
public void go()
{
this.goAlgorithm.go();
}
}
一个扩展抽象类的类:
public class Tomcat extends Vehicle
{
public Tomcat()
{
setGoAlgorithm(new GoByFlyingFast());
}
}
(来自傻瓜设计模式的代码示例)
在抽象类的接口方法实现中,有没有办法确定调用接口方法的对象的子类?
go() 是否可以确定 Tomcat 对象是否正在调用 Vehicle 类定义的 go() 方法?
如果这个问题已经被提出,我们深表歉意。正如这个问题的标题所证明的那样,我很难简明扼要地表达我的问题。
谢谢!
编辑:纯粹的好奇问题
【问题讨论】:
-
go() 是否可以确定 Tomcat 对象是否正在调用 Vehicle 类定义的 go() 方法? 使用这种设计,不,这是不可能的。
-
“go() 是否可以确定 Tomcat 对象是否正在调用 Vehicle 类定义的 go() 方法?”首先,你为什么想知道这个?