2 cai772088996 cai772088996 于 2016.04.30 14:33 提问

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实现吗?

3个回答

niaonao
niaonao   Rxr 2016.04.30 14:44
已采纳

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

cai772088996
cai772088996 谢谢,没看全,此接口的确又被另一个类实现过
大约 2 年之前 回复
dongfeng9ge
dongfeng9ge   Ds   Rxr 2016.04.30 14:43

接口不能用于声明变量的

niaonao
niaonao   Rxr 2016.04.30 14:49

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

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

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

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
接口声明变量的一个实际例子
java自学者,如果错误,还请多多指教。实际工作中在重写UDTF子类的process方法的时候,遇到了一个forward方法,在研究源码的过程中对接口的概念更为清晰了。 UDTF接口说明如下: Java UDTF需要继承com.aliyun.odps.udf.UDTF类。这个类需要实现4个接口。 接口定义 描述 public void se
用JAVA接口声明一个变量是什么意思?
不是接口变量,而是一个接口类型的引用指向了一个实现给接口的对象,这是java中的一种多态现象 ,java中的接口不能被实例化,但是可以通过接口引用指向一个对象,这样通过接口来调用方法可以屏蔽掉具体的方法的实现,这是在JAVA编程中经常用到的接口回调,也就是经常说的面向接口的编程
接口引用变量调用方法
接口可以创建对象的引用,指向实现了该接口的类的对象。但引用变量只能调用接口本身提供的方法(在类中被重写的),例如: interface A{ public abstract void read(); void write(); ... } Class B implement A{ void read(){ ... } void write(){ ... } ......
java接口中能申明私有成员么?接口能不能实例化?
<br />接口中不能有私有成员,不能有实现方法,只有方法声明, 接口没有实例化,只能是 (接口) ITest test = new Test();实际上还是实例化了接口的实现类 抽象类中可以有私有成员,可以有实现方法 他自己都能实例化了还要断承和实现类做啥(哈哈,这是俗一点的说法) 有时间在网上看看接口和抽象类的区别================================================接口可以实例化<br />一般对象比如有个具体的类Person已定义好,
Java接口声明对象
Java接口本身没有任何实现,因为Java接口不涉及表象,而只描述public行为,所以Java接口比Java抽象类更抽象化。但是接口不是类,不能使用new 运算符实例化一个接口。如 x=new comparable(......);//这个是错误来的。但是可以声明接口变量Comparable x; //这是允许的。 用JAVA接口声明一个变量是什么意思? 不是接口变量,而是一个接口类型的
为什么接口里声明的都是常量
这是一道面试题,有些人可能拿到这到题就会困惑,接口里声明的都是常量,这是j2se里规定,还有什么理由吗?确实在我看到这到问题的时候也是这么想的,但仔细一考虑也发现这道的意义所在。        接口中不允许方法的实现,而抽象类是允许方法实现的及定义变量的,因此我们可以看出接口是比抽象类更高层次的抽象。如果接口可以定义变量,但是接口中的方法又都是抽象的,在接口中无法通过行为(例如set()方法
java类中声明的立即赋值的成员变量,真的立即赋值了吗?
java类中声明的立即赋值的成员变量,真的立即赋值了吗?   我告诉你答案。并没有!   下面我们来执行一个例子,验证一下?   首先定义一个抽象的父类,父类的构造函数中调用子类实现的方法。   public abstract class Parent { public Parent(){ System.out.println("在父类的构造函数中调动子类的实例化了initVari
(转)定义接口类型的引用变量有什么好处?
原地址:http://www.cnblogs.com/chaohi/archive/2008/10/23/2330442.html 面向接口编程: 1, 在定义一个引用变量时,  心里想的应该是:我在这里需要一个什么样的功能,我是因为需要什么功能才创建变量的!  接口定义了功能的集合!   所以我应该是用接口来定义这个引用变量嘛! 2, 定义好了引用变量以
Java中接口是否可以包含变量
接口中这样的定义是可以通过的  interface interf {     public int a = 100;     public void p(); } 但是变量会自动转换为public final static类型 就是说是不可以改变接口的实现类中的变量的
JDK1.8中 接口成员变量和成员方法
jdk1.8接口成员变量和方法