java中接口能用new创建吗
首先感谢题主的邀请!话说Java中可以用匿名类有尝试创立接口,不知道是不是楼主所指。见下面代码示例:1 package contract;2 3 public interface ISay {4 void sayHello();5 }
上面是一个简单的接口,下面是如何使用:package jimmy;import contract.ISay;public class Program { public static void main(String args) { ISay say = new ISay() { public void sayHello() { System.out.println("Hello java!"); } }; }}
初看上去,就好象在“不提供接口实现的情况下,直接new了一个接口实例”。
观察bin目录下的class输出,会发现有一个类似Program。
class文件,如果反编译观察一下,发现原来是编译器自动生成一个类program。package jimmy;import contract.ISay;import java.io.PrintStream;class Program$1 implements ISay{ public void sayHello() { System.out.println("Hello java!"); }}
如果有些场合,只需要临时需要创建一个接口的实现类,上面的"技巧"可以用来简化代码。
■网友
感谢邀请
初学者首先要区分开2件事:创建句柄(引用)、创建对象。Apple apple = new Apple(); //这两件事都做了。Fruit fruit = null; //创建了一个interface句柄fruit = new Apple(); //创建了Apple实例,并赋值给fruit句柄
初始化:例如上面new一个Apple的对象实例时,会触发初始化:分配具体的空间,执行对成员变量初始化、构造函数等。
实现:是代码结构关系范畴。例如我们说Apple类实现了interface Fruit。
实例化:例如上面new一个Apple的对象实例,就叫实例化。
创建对象:例如上面new一个Apple的对象实例,也叫创建了一个对象实例。
【java中接口能用new创建吗】 创建接口:有两种理解。1. 代码code阶段,新创建了一个interface定义。2. 创建了一个interface类型的句柄,例如上面的Fruit fruit = null;
■网友
谢邀,接口是一种特殊的抽象类,你可以把借口看成一种行为的规范就好像你要过马路,安全的方法就是遵从走斑马线这个规范,至于斑马线这么宽,怎么去走,接口的使用者来决定至于你是直走,还是抛物线走,还是z轴方式正弦曲线跳着走,完全看你的freestyle,这就是借口的实现初始化对象是指一个对象即将被加载到堆内存并创建自己的栈内存时所要做的操作实例化个人理解就是根据一个类(模板)的格式创建一个可操作的实体至于接口能不能new出来,说不能,是因为不能像用new实现类那样new出来,说能,是因为你用new必须要在这条语句中实现这个借口的所有方法个人浅见,不喜勿喷,可以讨论
■网友
只能 接口 a =new 实现类();但是实现类不能是抽象类,所以你上面的初始化是有问题的,只能在派生一个子类来初始化。类是实现某个接口(可以多个),继承某个父类(c++可以多个),实例化对象就是new,初始化看语境,一般也指实例化
推荐阅读
- dart这编程语言现在发展怎么样了,语法与Java,c#很相似,甚至更简洁
- 电视盒子能用代理吗
- 能否推荐一个能用快播看电影且电影都是中英双字幕的网站
- 为啥亚马逊说kindle paperwhite可以续航几周,到我这只能用2、3天
- 趣头条|试驾新辉昂:好像真的只能用低调的奢华来形容
- Java工程师和C++工程师在工作上有啥区别哪个更适合自身发展
- 宝宝|关键要看这个!宝宝多大才能用枕头?不是看年龄
- 27岁,转行java的血与泪,该何去何从
- Apple Pay 是不是有闪付功能的卡才能用
- 怎样统计工程中未使用的java类