精华内容
下载资源
问答
  • java 接口不是不能new吗? 这叫匿名内部类,你后面的大括号实际上就是一个Runnable的实现类了 只不过这个类名和接口名称一样,所以是匿名的,别人地方也用不了 这种写法相当于先创建了一个匿名类,实现了这个接口,...

    java 接口不是不能new吗?

    • 这叫匿名内部类,你后面的大括号实际上就是一个Runnable的实现类了 只不过这个类名和接口名称一样,所以是匿名的,别人地方也用不了
    • 这种写法相当于先创建了一个匿名类,实现了这个接口,然后new一个这个匿名类的对象
      所以可以使用.
    • 这个是等于创建了一个匿名内部类,这个类实现了该接口,并实现了该接口的run方法。
      与你定义一个类实现这个接口是等效的。
      不过这个就是没有类名。而且无法在其他地方new出对象。
    • java:使用匿名类直接new接口
    • java中的匿名类有一个倍儿神奇的用法,见下面代码示例:package com.dtqn.action;  public interface interFace {    void writeClass();}实现类package com.dtqn.action;  public class Program {      public static void main(String[] args) {        // TODO Auto-generated method stub        interFace say = new interFace(){              @Override            public void writeClass() {                // TODO Auto-generated method stub                            }                    };    }  }new接口用于简化代码用。。。。。。。。。
       
    展开全文
  • 可以声明接口,但不可以new接口

    千次阅读 2014-05-02 13:08:47
    接口是一种特殊的抽象类,它包含常量和方法的声明,但没有方法的实现;可以把接口看成是一种特殊的抽象类; 接口实质上是一种规范,它关心的是“做什么”,不关心“怎样...接口也不能用new来进行实例化,但可以声明接
    接口是一种特殊的抽象类,它包含常量和方法的声明,但没有方法的实现;可以把接口看成是一种特殊的抽象类;
    
    接口实质上是一种规范,它关心的是“做什么”,不关心“怎样做”;
    接口中的字段都是最终(final)、静态(static)、公共(public)的,即是公有的静态常量;
    接口中方法的访问权限是公有(public)的,即使省略也默认为public;

    接口也不能用new来进行实例化,但可以声明接口的引用,用来指向实现该接口的子类的实例。



    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    1
    public    interface   Handler{ 
         public    void   Hello(); 
    } 
        
    2
    import    Handler; 
    public    class    OtherParser{ 
         Handler   handler; 
    ...... 
    }


    看上述代码,接口是要被实现的,为什么也可以被“实例化”? 


    一定有某个类实现了这个接口,并且在类路径中可以找到!

     

    接口是永远不能被实例化的,而2中只是对接口做引用,并没有被实例化。 

    接口可以看成是高度抽象的抽象类,它描述的事物们所共有的方法(方法签名),也就是规定除了该接口的方法的调用参数与规则,仅仅而已,它的使用必须依赖于实现类。 
    例如: 

    1
    2
    3
    4
    5
    public    class    MyHandler   implements   Handler{ 
       public    void   Hellp(){ 
           System.out.println(  "my   Handler   implements " ); 
       }     
    }


    而在对接口的引用时,采用的是实例化实现该接口的类 

    1
    Handler   handler   =    new    MyHander();


    口可以被声明出来,但决不能实例化,它可以作为子类的句柄指向子类的实例,但是不能通过handler来调用子类所特有方法


    展开全文
  • 本片博客出生的源头,直接new 抽象类、new 接口??how could it be? one Answer:cause it is a Anonymous Inner Class . 只要是一个抽象类或接口,那就可以使用匿名内部类来实现。最常用的是在多线程中继承...

    一、内部类

    1、内部类初识

    一般,一个类里主要包含类的方法和属性,但在Java中还提出在类中继续定义类(内部类)的概念。

    内部类的定义:类的内部定义类

    先来看一个实例

    [html]  view plain  copy
      在CODE上查看代码片 派生到我的代码片
    1. public class Out {  
    2.     private int a=1;  
    3.     //定义内部类  
    4.     class Inner  
    5.     {  
    6.         private int a=12;  
    7.         public void show()  
    8.         {  
    9.             System.out.println(a);  
    10.         }  
    11.     }  
    12.       
    13.     public static void main(String[] args) {  
    14.         Out.Inner in=new Out().new Inner();//实例化内部类  
    15.         in.show();  
    16.           
    17.     }  

         如Out类中定义一个a变量,再定义一个Inner内部类,该类可直接调用输出a;同时为Out设定的show方法内部类也可直接调用。内部类的提出,唯一的好处就在于可直接使用外部类(Out类)的所有属性,不再需要通过get、set操作数据。但这种方便是以牺牲类的基本结构为代价的。这里需要注意的是对内部类的实例化语法。

    2、 内部类对外部类的操作:内部类中的变量访问形式

    [html]  view plain  copy
      在CODE上查看代码片 派生到我的代码片
    1. public class Out {  
    2.     private int a=1;  
    3.     //定义内部类  
    4.     class Inner  
    5.     {  
    6.         private int a=12;  
    7.         public void show()  
    8.         {  
    9.             int a=122;  
    10.             System.out.println("局部变量:"+a);  
    11.             System.out.println("内部类变量:"+this.a);  
    12.             System.out.println("外部类变量:"+Out.this.a);  
    13.         }  
    14.     }  
    15.       
    16.     public static void main(String[] args) {  
    17.         Out.Inner in=new Out().new Inner();//实例化内部类  
    18.         in.show();        
    19.     }  
    依次输出122,12,1 ,这个实例主要是提醒大家在对具有内部类的类成员变量、内部类变量调用的时候需要注意加上对应的关键字。

     二、内部类的常用类型

    1、常规内部类

    常规内部类没有用static修饰且定义在在外部类类体中。
      1.常规内部类中的方法可以直接使用外部类的实例变量和实例方法。
      2.在常规内部类中可以直接用内部类创建对象。

    2、静态内部类

    用static修饰内部类

    1.如果使用static修饰内部类,该内部类只能访问外部类的静态成员变量。

    3、局部内部类

     内部类前加上private修饰,使得该内部类只有当前外部类方法才可调用。其他类无实例化权限。

    4、匿名内部类

    这里着重介绍匿名内部类的使用。匿名内部类:没有名字的内部类,它的特点是只能使用一次,通常用于简化代码编写。使用匿名内部类必须继承一个父类或实现一个接口。

       声明和构造匿名内部类的一般格式如下:
       new ClassOrInterfaceName(){ //抽象类或接口

        /*类体*/ }

    1)匿名内部类在抽象类上的应用

      不使用匿名内部类实现抽象类方法实例

    [html]  view plain  copy
      在CODE上查看代码片 派生到我的代码片
    1. public abstract class InnerClass2 {  
    2.     public abstract void show();  
    3.       
    4.     public static void main(String[] args) {  
    5.         InnerClass2 in=new Child(); //多态,实例化子类,调用子类show方法  
    6.         in.show();  
    7.     }  
    8. }  
    9.   
    10. public class Child extends InnerClass2{  
    11.         public void show()  
    12.         {  
    13.             System.out.println("jdfklj");  
    14.         }  
    15. }  
       使用匿名类实现思路

    [html]  view plain  copy
      在CODE上查看代码片 派生到我的代码片
    1. public abstract class Out2 {  
    2.     public abstract void show();  
    3.       
    4.     public static void main(String[] args) {  
    5.         Out2 out=new Out2()  
    6.         { //匿名类-直接实例化了out2和show 方法,在调用out.show()  
    7.             public void show()  
    8.             {  
    9.                 System.out.println("jdljsalkf");  
    10.             }  
    11.         };  
    12.         out.show();  
    13.     }     
    14. }  

        在注释出就是使用了一个匿名类,对抽象类Out2的show实例,最后out.show()调用即可。
    2)匿名内部类在接口上的应用

    [html]  view plain  copy
      在CODE上查看代码片 派生到我的代码片
    1. public interface Out3 {//接口  
    2.     void show();  
    3.       
    4.     public static void main(String[] args) {  
    5.         Out3 out=new Out3()//new Out3  
    6.         {  
    7.             public void show()  
    8.             {  
    9.                 System.out.println("lkjdfaj");  
    10.             }  
    11.         };  
    12.     }  
    13. }  
       这里new Out3是 本片博客出生的源头,直接new 抽象类、new 接口??how could it be? one Answer:cause it is a Anonymous Inner Class.只要是一个抽象类或接口,那就可以使用匿名内部类来实现。最常用的是在多线程中继承Thread类或实现Runnable接口。

    [html]  view plain  copy
      在CODE上查看代码片 派生到我的代码片
    1. public static void main(String[] args) {  
    2.         Thread thread =new Thread()  
    3.         {  
    4.             public void run()  
    5.             {  
    6.                 System.out.println("kdjfka");  
    7.             }  
    8.         };  
    9.         thread.start();  
    10.           
    11.         //接口  
    12.         Thread thread2=new Thread(new Runnable(){  
    13.             public void run()  
    14.             {  
    15.                 System.out.println("22222222");  
    16.             }  
    17.               
    18.         });   
    19.         thread2.start();  
    20.     }  
    展开全文
  • 本片博客出生的源头,直接new 抽象类、new 接口??how could it be? one Answer:cause it is a Anonymous Inner Class . 只要是一个抽象类或接口,那就可以使用匿名内部类来实现。最常用的是在多线程中继承Thread...

    一、内部类

    1、内部类初识

    一般,一个类里主要包含类的方法和属性,但在java中还提出在类中继续定义类(内部类)的概念。

    内部类的定义:类的内部定义类

    先来看一个实例

    public class Out {
    	private int a=1;
    	//定义内部类
    	class Inner
    	{
    		private int a=12;
    		public void show()
    		{
    			System.out.println(a);
    		}
    	}
    	
    	public static void main(String[] args) {
    		Out.Inner in=new Out().new Inner();//实例化内部类
    		in.show();
    		
    	}

         如Out类中定义一个a变量,再定义一个Inner内部类,该类可直接调用输出a;同时为Out设定的show方法内部类也可直接调用。内部类的提出,唯一的好处就在于可直接使用外部类(Out类)的所有属性,不再需要通过get、set操作数据。但这种方便是以牺牲类的基本结构为代价的。这里需要注意的是对内部类的实例化语法。

    2、 内部类对外部类的操作:内部类中的变量访问形式

    public class Out {
    	private int a=1;
    	//定义内部类
    	class Inner
    	{
    		private int a=12;
    		public void show()
    		{
    			int a=122;
    			System.out.println("局部变量:"+a);
    			System.out.println("内部类变量:"+this.a);
    			System.out.println("外部类变量:"+Out.this.a);
    		}
    	}
    	
    	public static void main(String[] args) {
    		Out.Inner in=new Out().new Inner();//实例化内部类
    		in.show();		
    	}
    依次输出122,12,1 ,这个实例主要是提醒大家在对具有内部类的类成员变量、内部类变量调用的时候需要注意加上对应的关键字。

     二、内部类的常用类型

    1、常规内部类

    常规内部类没有用static修饰且定义在在外部类类体中。
      1.常规内部类中的方法可以直接使用外部类的实例变量和实例方法。
      2.在常规内部类中可以直接用内部类创建对象。

    2、静态内部类

    用static修饰内部类

    1.如果使用static修饰内部类,该内部类只能访问外部类的静态成员变量。

    3、局部内部类

     内部类前加上private修饰,使得该内部类只有当前外部类方法才可调用。其他类无实例化权限。

    4、匿名内部类

    这里着重介绍匿名内部类的使用。匿名内部类:没有名字的内部类,它的特点是只能使用一次,通常用于简化代码编写。使用匿名内部类必须继承一个父类或实现一个接口。

       声明和构造匿名内部类的一般格式如下:
       new ClassOrInterfaceName(){ //抽象类或接口

        /*类体*/ }

    1)匿名内部类在抽象类上的应用

      不使用匿名内部类实现抽象类方法实例

    public abstract class InnerClass2 {
    	public abstract void show();
    	
    	public static void main(String[] args) {
    		InnerClass2 in=new Child(); //多态,实例化子类,调用子类show方法
    		in.show();
    	}
    }
    
    public class Child extends InnerClass2{
    		public void show()
    		{
    			System.out.println("jdfklj");
    		}
    }
       使用匿名类实现思路

    public abstract class Out2 {
    	public abstract void show();
    	
    	public static void main(String[] args) {
    		Out2 out=new Out2()
    		{ //匿名类-直接实例化了out2和show 方法,在调用out.show()
    			public void show()
    			{
    				System.out.println("jdljsalkf");
    			}
    		};
    		out.show();
    	}	
    }

        在注释出就是使用了一个匿名类,对抽象类Out2的show实例,最后out.show()调用即可。
    2)匿名内部类在接口上的应用

    public interface Out3 {//接口
    	void show();
    	
    	public static void main(String[] args) {
    		Out3 out=new Out3()//new Out3
    		{
    			public void show()
    			{
    				System.out.println("lkjdfaj");
    			}
    		};
    	}
    }
       这里new Out3是 本片博客出生的源头,直接new 抽象类、new 接口??how could it be? one Answer:cause it is a Anonymous Inner Class.只要是一个抽象类或接口,那就可以使用匿名内部类来实现。最常用的是在多线程中继承Thread类或实现Runnable接口。

    public static void main(String[] args) {
    		Thread thread =new Thread()
    		{
    			public void run()
    			{
    				System.out.println("kdjfka");
    			}
    		};
    		thread.start();
    		
    		//接口
    		Thread thread2=new Thread(new Runnable(){
    			public void run()
    			{
    				System.out.println("22222222");
    			}
    			
    		}); 
    		thread2.start();
    	}
        看到new 接口的事儿,别奇怪,匿名内部类告诉你答案。



    展开全文
  • java中接口是不能new的,当new一个接口的时候,那么这个就是一个实现该接口的匿名类,这么理解正确吗
  • Java之可以new 一个接口

    万次阅读 多人点赞 2019-04-01 16:20:26
    先说个Java 接口的基本常识: 接口只是定义了一个标准,很多类可以实现这个接口,eg:List接口 List list = new ArrayList(); // 实例化的是ArrayList这个类 List list = new Vector(); // 实例化的是Vector这个...
  • 接口和抽象类可以被new嘛?——顺便总结内部类

    万次阅读 多人点赞 2015-08-04 21:04:13
    背景:  最近有同事跟我说了他面试时遇到的问题,考官问:“接口和抽象类可以被new嘛?”。这可能不是考官的原话,但是据他表达考官大概就是这个意思了。听到这个问题,我的第一反应是肯定...直接new接口和抽象类  
  • java原来接口可以直接new

    千次阅读 2019-07-29 17:11:28
    再看java多线程的时候,看到ExecutorService,点了一下回车,一看是个接口直接就给我new出了,当时就懵逼,是那个老师告诉我接口不可以直接new的。下面是我的代码A,B都是接口,c是main方法 package Multi; public ...
  • 接口可不可以被new

    千次阅读 2017-01-09 10:56:18
    接口是不可以被new的,但是有一种写法是 new Person(){},似乎是接口new了,其实不然,注意后面的{},这其实是匿名内部类。 可以参看链接:http://www.cnblogs.com/yjmyzz/p/3448330.html 为什么不可以呢:我的...
  • 今天我们讨论问题是:接口 对象 = new 实现类 与 实现类 对象= new 实现类??? Java 中到底是应该用接口类型 还是实现类的类类型去引用对象? //implA 为接口 ClassA为其实现类 implA a=new ClassA();//...
  • 接口测试工具Postman接口测试图文教程

    万次阅读 多人点赞 2018-07-11 13:10:03
    市场上有很多优秀的,完善的接口测试工具,比如SoapUI,Postman等,能够高效的帮助后端开发人员独立进行接口测试。这里使用Postman接口测试工具,此处以请求方式为POST的userLogin登录接口为例。
  • 通过反射机制加载类驱动和创建类实现:     ...接口: package iInterface; public interface IPerson {  public void setAge(int age);  public void setName(String name);  public vo
  • List是一个接口,而ArrayList是List接口的一个实现类。ArrayList类继承并实现了List接口。 因此,List接口不能被构造,不能...接口 a = new 实现类();这是多态的一种形式。我们知道父类或者接口中没有的方法,但是子
  • VC#中接口也能new么?new一个方法是什么意思?new和override的区别
  • 转载请注明出处。 原文链接:... 先讲一下接口回调。 interfacePeople{ voidpeopleList(); } classStudentimplementsPeople{ publicvoidpeopleList(){ ...
  • ![图片说明](https://img-ask.csdn.net/upload/201703/14/1489477795_107145.png) CharSequence是一个接口
  • 就是 private Ishape=shape;//Ishape为接口 public shapeProc(Ishape shape){ this.shape=shape;}//shapeProc 为构造函数 这为什么可以编译通过呢? 小白,求指导
  • 楼主你可以这么理解,new ActionListener(){} 相当于动态的实现了接口,在内存中建立了一个ActionListener对象,区别就是这个对象的实现类就直接在另一个代码中定义了,而不是独立的文件。 我们一般称这种类为...
  • Java 匿名类(new+接口 也是一种)

    千次阅读 2014-12-22 21:56:48
    接口不能实现一个实例,但在匿名类中,切可以用 new + 接口名 实现一个匿名类。   关于JAVA内部类:一个内部类的定义是定义在另一个类内部的类。  存在它的原因是:  1.一个内部类的对象能够访问创建它的对象的...
  •  最近有同事跟我说了他面试时遇到的问题,考官问:“接口和抽象类可以被new嘛?”。这可能不是考官的原话,但是据他表达考官大概就是这个意思了。听到这个问题,我的第一反应是肯定不行啊,直接对接口和抽象类调用...
  • java接口实现多态

    千次阅读 2019-03-05 16:35:49
    多态: 父类的引用类型变量指向了子类的对象 或者是 接口类型的引用类型变量指向了接口实现类 的对象。...接口 变量 = new 接口实现类的对象。 interface Dao{ //接口的方法全部都是非静态的方法。 ...
  • JAVA基础——接口(全网最详细教程)

    万次阅读 多人点赞 2018-05-10 09:46:42
    Java基础——接口 接口概念 官方解释:Java接口是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的...
  • rRegisteredAndLogin(java.lang.String,java.lang.String,java.lang.String)Creating a new SqlSession SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@796753de] was not registered for synch...
  • java为什么要使用接口回调

    千次阅读 2016-05-03 21:48:06
    接口 接口变量 = new 接口 子类();Link<String> link = new ArrayList(); //Link为一个接口 ArrayList为一个泛型类那么为什么前面要用接口引用new 出来的对象呢?可以告诉你的是,这是接口的回调,是接口多态的一种...
  • 一直认为接口是不能实例化的,但是下面的代码为啥不报错? using Microsoft.Office.Interop.Excel; using System; namespace Test { class Program { static void Main(string[] args) { Application a...
  • 接口后面能不能使用new操作符

    千次阅读 2006-10-27 11:50:00
    这是一些新手问到一个问题,说是在接口后面能不能使用new操作符! 这是一些语法基础知识,需要借助于工具才能快速提高。能与不能,直接写一个看看即可。 看例子: public interface Humans{ } 如果我们手中没有...
  • 接口接口回调

    万次阅读 多人点赞 2017-11-29 16:36:47
    接口的概念   关键字interface声明一个接口接口不是类...  1)接口不能new一个对象,他不是类   2)接口的方法没有body,既不能有{};   3)实现类使用关键字implements实现对应接口。实现类必须实现接口的所有
  • 怎么还能直接new接口呢? 答:匿名对象类实现接口使用了简化写法,在使用匿名内部类时会自动创建一个实现类,其实你不是new了那 个接口,你是new了那个实现类! 问:你的重写方法怎么没有全部重写接口的 还记的...
  • 新手小白学JAVA 接口 面向接口开发

    万次阅读 多人点赞 2021-05-13 13:35:52
    接口 1 接口的概念 接口(英文:Interface),在JAVA编程语言中是一个抽象类型,是抽象方法的集合,接口通常以interface来声明。一个类通过继承接口的方式,从而来继承接口的抽象方法。 接口并不是类,编写接口的...
  • 接口

    千次阅读 2019-01-20 09:32:16
    接口的用途是用来定义现实世界不同类型事物的共同特征 如: 飞行特征 鸟和飞机 他们的共同特征可被定义在接口接口包含:属性,抽象方法 有时必须从几个类中派生出一个子类,继承他们所有的属性和方法。...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,200,439
精华内容 880,175
关键字:

new接口