Java 接口 对象 = new 实现类 与 实现类 对象= new 实现类 区别 ?

接口 :
public interface UserService {
// 注册
public void regist();
}
实现类:
public class UserServiceImpl implements UserService {
@Override
public void regist() {
System.out.println("区别");
}
}
main(){
UserService userService = new UserServiceImpl();
userService.regist();
}
问题

为什么main 函数中 构造对象的时候 是:
1) UserService userService = new UserServiceImpl(); 而不是
UserServiceImpl() userService = new UserServiceImpl();

接口的设计主要还是为了实现多态的。

你这里觉得没区别是因为你只有一个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,我们还是要乖乖的这样做。

当然抽象类也可以这么用,但是因为一个类只能继承一个类,如果把抽象类拿来当接口用,那多态就是笑话了。

温馨提示:答案为网友推荐,仅供参考

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网