【发布时间】:2014-07-19 13:15:09
【问题描述】:
背景和设置
好的,让我们看看我能否让这个问题“有意义”。以下代码示例旨在传达原则并反映代码背后的思想。如果您对详细代码感兴趣,可以找到代码here。
我已经阅读了基础知识,咨询了Java Tutorials(这是一个很棒的资源)、好的 ol' Dietel 和文档。澄清一下:我是初学者。
我有三 (3) 个课程:
- ClassThatImplements
- ClassThatIsInterface
- ClassThatDoesSmthg
以下是它们的定义:
界面
真的很简单:
public interface ClassThatIsInterface {
public void doSomething(type variable);
}
实现接口的类
public class ClassThatImplents implements ClassThatIsInterface {
// Here's the bit I hope to ask about, pt. 1 of 2:
ClassThatDoesSmthg instance = new ClassThatDoesSmthg(this,
appropriateVariable);
}
做某事的类
public class ClassThatDoesSmthg {
// And the second bit, pt. 2 of 2:
public ClassThatDoesSmthg (ClassThatIsInterface variableOne,
type appropriateVariable) {
}
问题
上面的代码片段应该给你足够的信息来回答这个问题,我想。
确实,问题的重点是后两个类:ClassThatImplements 和ClassThatDoesSmthg。
ClassThatDoesSmthg 期望将interface 类ClassThatIsInterface 类型的对象作为其构造函数的一部分;然而,发送到构造函数的是一个类型为ClassThatImplements 的对象,它实现了ClassThatIsInterface。
显然,如果没有实现,new ClassThatDoesSmthg(this, appropriateVariable) 语句将失败(产生错误)。我感兴趣的是什么;然而,当一个类 implements 和 interface 时,实现类 - 在这种情况下 - 被认为是一个 is-a ClassThatIsInterface (至少,它是这样出现的)。因此,该语句成功。
所以,这是我的问题:从概念上讲,ClassThatImplements 发生了什么事到它被识别为ClassThatIsInterface 类型的地方?
【问题讨论】:
-
简单来说,Java中有两个“is-a”关系;
extends和implements. -
没有什么“发生”,它简单的“is-a”正是因为它实现了那个接口。
-
谢谢,我想答案很简单。我只是希望发生一些更有趣的事情,我猜。
标签: java inheritance implements