当前位置: 首页 > 面试题库 >

初始化接口?

楚皓君
2023-03-14
问题内容

在当前的问题中(我将文件打印到Java中的物理打印机),我一直在疯狂地遍历代码,试图从所使用的每个类的javadoc中吞噬所有有用的丢失信息。

现在,我从以前的问题中抽出了很多代码,所以有相当一部分我不是自己写的。我注意到的问题是,我抓取的代码正在初始化一个对象,例如实现接口(Doc)的“SimpleDoc”并将其分配给该接口?

小代码段:

Doc mydoc = new SimpleDoc(textStream, flavor, null);

现在,据我所知,我们创建了对象。我熟悉继承,并且熟悉使用接口允许类“继承”多个超类的技巧。

但这只是不对劲。您可以创建一个实现接口的类,这对我来说很好。但是,当创建接口并将对象简化为接口时,会发生什么情况?当我完全引用mydoc时,我要访问什么?


问题答案:

诀窍是要意识到您不是在“创建”,“实例化”或“初始化”接口。您只是将变量定义为您知道实现该接口的对象。

你基本上是告诉其他程序员对这个代码,该方法的其余部分,你只对事实感兴趣的工作即myDoc是一个Doc(即,一些满足Doc接口)。这可以使编程变得更简单,因为IDE的自动完成功能现在只会向您显示此接口定义的方法,而不是a
SimpleDoc能够执行的所有操作。

想象一下,将来您想扩展功能,以便可以根据某些输入使用不同的Doc实现。而不是显式创建SimpleDoc,而是说:

Doc mydoc = docFactory.getByType(inputType);

docFactory能产生任何类型的Doc,并且此方法并不真正关心什么样的被实例化,因为它会像对待一个Doc不分。



 类似资料:
  • 说明 用于初始化接口类型、协议,验证接口密钥 请求地址 http://api.dc78.cn/Api/sys_init 请求方式 GET 请求参数 参数 参数名称 必填 描述 范例 protocal 接口协议类型 否 用于声明接口使用的协议类型 mqtt type 客户端接口 否 用于说明客户端接口的类型 api 接口协议目前支持两种:mqtt、http。设置相应类型后,平台端将以此协议与客户端进

  • Initialization 初始化 Although it doesn’t look superficially very different from initialization in C or C++, initialization in Go is more powerful. Complex structures can be built during initialization a

  • 初始化是为类、结构体或者枚举准备实例的过程。这个过需要给实例里的每一个存储属性设置一个初始值并且在新实例可以使用之前执行任何其他所必须的配置或初始化。 你通过定义初始化器来实现这个初始化过程,它更像是一个用来创建特定类型新实例的特殊的方法。不同于 Objective-C 的初始化器,Swift 初始化器不返回值。这些初始化器主要的角色就是确保在第一次使用之前某类型的新实例能够正确初始化。 类类型的

  • new iSlider(DOM, DATA, OPTIONS) Name Type Description DOM dom 容器dom节点 DATA Array 数据列表 OPTIONS Object 配置项 DOM new iSlider(DOM, DATA, OPTIONS); {HTMLElement} 容器dom节点 作为第一个参数并不是必须的,会被OPTIONS.dom覆盖,但是这十分必

  • 确认初始化操作 1)初始化操作用来清空此统计ID的统计数据 2)与启用新的统计ID不同的是,初始化操作使您不需更换网站上的统计代码就可以重新开始统计 注意:初始化操作将清除此统计ID的所有统计数据,此操作不可恢复!!!

  • 创建版本库 git 基于文件夹(工作树)进行版本控制,在一个文件夹中创建 git版本库: $ cd project/ $ git init Initialized empty Git repository in .git/ 输出信息:在当前文件夹的 .git/ 目录下创建版本库 将文件提交到 git索引: git add file1 file2 file3 …… 更方便的作法是