界面可以包含或存储值?

时间:2018-01-08 07:00:49

标签: java android

我是一名Android开发人员。 阅读一些源代码,我发现了一些我觉得很奇怪的东西。

CharSequence mCharSe;
mCharSe = "hello"; // This works.

这是有效的代码。正确?

这就是我觉得奇怪的事情。我声明了一个名为'myInterface'的接口,如下面的

interface myInterface {
    void function();
} 

在另一部分中,我写了一些像这样的代码

myInterface mInter;
mInter = "hello"; // This doesn't work

据我所知,Interface只是一组空函数。

'CharsSequence'是一个接口以及'myInterface',

但为什么'myInterface'不能包含'CharSequence'等字符串值?

“CharSequence”如何以及在何处包含或存储值,即使它只是一个“界面”?

提前致谢。

2 个答案:

答案 0 :(得分:2)

CharSequence mCharSe;之类的声明之后,变量可以保存(引用)任何实现接口CharSequence的对象。由于String实现了此接口,因此您可以分配字符串对象。

在您的第二个示例中,String未实现myInterce,因此分配无效。

您的措辞也略有不正确。接口不存储任何内容。

答案 1 :(得分:0)

接口不是一组空函数,它的类的蓝色打印。以下是关于界面的一些观点 1.默认情况下,所有全局变量都是publicfinal 2.所有非静态方法都是publicabstract。方法体仅存在于默认方法和静态方法中
对于你的问题。
String与您的界面之间没有链接。

myInterce mInter;
mInter = "hello";

这不起作用(编译错误)。

String implements CharSequence。见。

public final class String
implements java.io.Serializable, Comparable<String>, CharSequence

所以它已经是CharSequence的孩子了,这就是为什么你的第一次检查会有效。