java的接口可以直接拿来声明变量?

public interface IUserManage {
public void addUser(User user);
public void modifyUser(User user);
public void deleteUser(User user);
}

现在有这么个接口,然后在另一个没有实现此接口的类里看到如下这句:
private IUserManage userManage;
在这个类里,直接声明了userManage,并且userManage可以直接调用接口里的那三个方法

接口不是只能用来implements实现吗?

该接口,需要对应类实现,你说得对,用 implements
在另一个类中,声明接口变量 ,调用其方法,是可以的,因为接口方法被实现了。
你也可以理解为,是调用的实现接口的那个类的对象。
如果接口类没被实现,会报异常,提示你先实现接口。才能调用接口方法。
(你写接口就是让用的,其他类想调用它你说可以不可以。前提接口中的方法已被实现)
(这里面声明接口对象或说实现接口类的对象,是为了调用接口方法而不是要实现接口。)

正确调用接口:
现有接口 StudentDao ,实现接口的类 StudentDaoImpl ,该类中重写实现接口的方法

在其他类中或程序中想调用接口方法的话:
StudentDao studentDao = new StudentDaoImpl();
//另一中写法
StudentDao studentDao;
studentDao = new StudentDaoImpl();

引入接口和实现接口对应的包,就能调用接口中的方法了

接口是可以声明变量的,但是接口声明了的变量是不能直接调用方法的,是不能用的(即使能用接口里面的方法也都是没有方法体的,调用方法调用了一个寂寞),必须有实现类的对象给这个接口类型的变量赋值(类似接口多态new对象),赋值完后不就是接口实现类对象了嘛,然后再调用实现类中的的方法。

接口不能用于声明变量的