我也没怎么搞懂啊 相互探讨吧 下面是别人说的,看一看也许有帮助:
接口也是可以实例化的,但是接口的实例化其实更倾向于逻辑性的操作,
打个比方,我有一个接口名为水果,里面有“榨汁”这个方法,而我某部分程序的逻辑行为就是调用某个水果实例的“榨汁”方法。但是如果水果没用通过注入(即在某段程序将某种实现了水果接口的类的实例,比如苹果什么的实例,赋值给这个接口的实例),是不具有现实功能的,即该代码片段仅仅是一个行为逻辑。
在你追问的的问题中,该接口的实例化,其实是匿名地临时地创造了具有某个接口功能的类的实例,往往是我们需要实现某种功能,但这个类的实现,并不具有现实意义,也不便于维护和管理,的一种妥协行为,某种意义上破坏了面向对象的特性,但是方便了编程人员。你可以看做他其实是某个实现了该接口的类的实例,而不是这个接口的实例。
这一个讲的好像更好:
接口可以实例化
一般对象比如有个具体的类Person已定义好,要实例化它, 采取的语法是 Person objPerson = new Person();
但接口(如IConnection)不能这么做,其不能直接New 自己,如 IConnection objIConnection = new IConnection(),
这就是说"照例不可以生成接口的对象"的含义.
但面向对象都具有多态,可以向上转型, 比如某个类实现了该接口,如类Connection实现了该接口,则Connection类的
实例化对象可以给IConnection接口. 如 IConnection objIConnection = new Connection()
然后编程都基于接口进行操作,这样脱离了具体的类的实现,在某些场合就更灵活和易于扩充.
把变的东西抽象出来了,成了接口,反倒就让代码相对固定了,能适应变化的情况.
接口不能实列化,但是可能通过某些类创建接口的对类
看上面所说接口不能实例化,这是不容置疑的
只是可以这样用:
实例化对象可以给IConnection接口. 如 IConnection objIConnection = new Connection()
接口不可以实例化。但是接口对象可以指向它的实现类对象。
Applet是类不是接口吧,至于你说的这种情况,com.xxx.Applet和com.yyy.Applet可是不一样的,一个可能是类一个可能是接口,
接口不能被实例化,只能被调用,就像淋浴喷头一样,必须将喷头接上水管才可以,总不能拿水管淋浴吧?
自己如果想实例化,要有行动(方法)和属性,类有默认的构造方法,所以当然可以自己实例化了。但接口没有构造方法,抽象方法也没有实体,怎么办,只能通过其他实现类看似继承的实现了他,然后实现类的实例向上转化成接口的对象实例。所以,你看到的很多接口可以直接用,其实就是接口创建了对象,而他的实例被其他类通过方法完成了。
我的这个问题呀,很深奥,我根本就不懂,所以不会打