使用此代码
public static void doSomething(Animal arg)
{
...
}
以下哪一项更正确? (他们都编译并运行良好。)有区别吗?
public static void main(String[] args)
{
Animal fido = new Dog();
doSomething(fido);
}
或
public static void main(String[] args)
{
Dog fido = new Dog();
doSomething(fido);
}
我不相信这很重要,但是更常见吗?感谢。
答案 0 :(得分:3)
这取决于您稍后在代码中使用此对象,如果这可能在其余代码中包含其他Animal
,则保留Animal
,以便调用此方法({ {1}}),无所谓(因为doSomething
是 Dog
)。
答案 1 :(得分:2)
这取决于您的使用案例。如果您需要访问Dog
的语义,那么您应该使用Dog
,如果您只需要Animal
的语义,并且您想要Animal
的一般性,那么您应该使用Animal
。
答案 2 :(得分:0)
根据经验,我喜欢尽可能保持类型 - 它是一种信息隐藏形式。即使类型仅在内部用于类或方法时,保持类型通用也会减少在代码中稍后引用该类型的实例时必须考虑的事项数。