我想避免使用switch声明,但我不知道如何.这是我的问题:
public class Person{
String status;
public void doSomething(){
switch (status) {
case "hungry":
eatSomething();
status = "full";
break;
case "full":
doNothing();
status = "hungry";
default:
break;
}
}}
Run Code Online (Sandbox Code Playgroud)
我想做这样的事情:
public abstract class Person{
public abstract void doSomething();
}
public class HungryPerson extends Person{
@Override
public void doSomethink() {
eatSomething();
}
}
public class FullPerson extends Person{
@Override
public void doSomething() {
doNothing();
}
}
Run Code Online (Sandbox Code Playgroud)
问题是:如果Person他吃了一些东西,那么他必须是FullPerson,但如果我有一个参考,HungryPerson我怎么能改变它FullPerson?
int main(){
Person person = new HungryPerson();
person.doSomething();
//I want to person contain a FullPerson reference.
}
Run Code Online (Sandbox Code Playgroud)
实际上,从面向对象的角度来看,您的第一个实现更好.对象的状态可以更改,但对象本身仍然是同一个对象.即使你饿了或吃完饭,你仍然是同一个人.您可能希望使用Enum而不是字符串作为状态.
| 归档时间: |
|
| 查看次数: |
193 次 |
| 最近记录: |