是否使用instanceof关键字反对的本质object oriented programming?我的意思是这是一个糟糕的编程习惯吗?我在某处读到使用instanceof关键字意味着设计可能不那么好.有更好的解决方法吗?
tho*_*att 14
一般来说是的.最好保留所有依赖于该类中特定类的代码,并且instanceof通常意味着您已经在该类之外放置了一些代码.
看看这个非常简单的例子:
public class Animal
{
}
public class Dog extends Animal
{
}
public class Cat extends Animal
{
}
public class SomeOtherClass
{
public abstract String speak(Animal a)
{
String word = "";
if (a instanceof Dog)
{
word = "woof";
}
else if (a instanceof Cat)
{
word = "miaow";
}
return word;
}
}
Run Code Online (Sandbox Code Playgroud)
理想情况下,我们希望所有特定于狗的行为都包含在Dog类中,而不是传播到我们的程序中.我们可以通过重写我们的程序来改变它:
public abstract class Animal
{
public String speak();
}
public class Dog extends Animal
{
public String speak()
{
return "woof";
}
}
public class Cat extends Animal
{
public String speak()
{
return "miaow";
}
}
public class SomeOtherClass
{
public String speak(Animal a)
{
return a.speak();
}
}
Run Code Online (Sandbox Code Playgroud)
我们已经指定Animal必须有一个speak方法.现在SomeOtherClass不需要知道每种动物的具体细节 - 它可以将其交给子类Animal.
| 归档时间: |
|
| 查看次数: |
11469 次 |
| 最近记录: |