实例左侧和右侧的确切含义

时间:2019-11-25 11:45:36

标签: java

假设以下情况:

Logger logger = new ConsoleLogger(); 

那不是

ConsoleLogger logger = new ConsoleLogger()

为什么左侧的名称与右侧的名称不同?

2 个答案:

答案 0 :(得分:2)

在Java中,它称为Polymorphism

orderByChild()

equalTo()Logger logger = new ConsoleLogger(); 接受的类型。它可以是Logger类型的任何对象或它的子类。因此,您会看到其他类型。

实际上,这意味着您可以定义如下内容:

logger

答案 1 :(得分:2)

Logger logger = new ConsoleLogger(); 

可能是一个字段声明(如果在方法的正文中找到,它也可以是局部变量声明,但类型表明它是在类级别的。)

此处Logger是变量的类型 loggernew ConsoleLogger()是我们用来初始化logger的值。 ConsoleLogger几乎可以肯定是Logger的子类(如果是接口,则是实现Logger的类)。

简而言之,您希望变量是最通用的类​​型,它仍然具有所有必需的方法。在这种情况下,您希望使用 logger变量的代码不知道它正在记录到控制台。您只希望它使用Logger类(或接口)提供的方法,而无需考虑具体实现是什么。

相关问题