通过接口 new 出来的是实现类,只是你在new 的时候就写了一个匿名的实现类,这个匿名的实现类的内容就是最后的那三个方法 getMetaData() getTotalHits() getTimeCost()
接口的设计主要还是为了实现多态的。
你这里觉得没区别是因为你只有一个UserServiceImpl实现类。
假设我们还有类A,B,C,他们都具有共同的行为regist。
假设我们还有个方法
void do(UserService us){//us.regist()
}
当然如果不用interface,那么你可能要定义4个方法来应对我们不同的对象了
void do(UserServiceImpl us){//us.regist()
}
void do(A us){
//us.regist()
}
...
尽管他们方法体一样,要做的事一样。可是如果没有interface,我们还是要乖乖的这样做。
当然抽象类也可以这么用,但是因为一个类只能继承一个类,如果把抽象类拿来当接口用,那多态就是笑话了。