Java 实例化接口和实现接口之间的区别

Java 实例化接口和实现接口之间的区别,java,interface,Java,Interface,创建接口对象和实现接口有什么区别 例如: public interface A{ public void testMethod(); } 正在创建接口的对象 public class B{ A a = new A(){ @override public void testMethod(){ //implemtation here } }; } 另一种方式是 public class B implements A {

创建接口对象和实现接口有什么区别

例如:

 public interface A{
    public void testMethod(); 

 }
正在创建接口的对象

 public class B{
    A a = new A(){
    @override
    public void testMethod(){  //implemtation here }
     };
  }
另一种方式是

   public class B implements A
       {
       @override
       public void testMethod(){}
       }
你错了:

在这里,您以匿名方式实现接口,并且始终拥有annonymouse类的实例

 public class B{
    A a = new A(){
    @override
    public void testMethod(){  //implemtation here }
     };
  }
在这里创建命名实现,只创建类而不实例化它

 public class B implements A
       {
       @override
       public void testMethod(){}
       }

无法创建接口的对象。接口它是一个抽象类,但所有的方法都是抽象的。在第一段代码中,您创建了一个实现接口A的匿名类(我建议您阅读java中的这个特性),在这种情况下,即使您在实现中定义了其他方法,您也无法调用接口的方法,但接口的方法是有限的。在第二段代码中,您正在创建一个实现接口a的类,这意味着您有一个至少包含接口a中定义的所有方法的类,您可以在类B中添加其他方法并调用它。

实际上,您不能实例化接口。您正在创建一个实现它的匿名类。此外,您的匿名类(A)将引用它在其中创建的B,这可能会导致不可预见的副作用