今天为了理解面向对象,写了把大象装进冰箱里的Demo
原本的代码是这样的:
class ZhuanDaXiangDemo
{
public static void main(String[] args)
{
Elephant e=new Elephant();
Icebox ice=new Icebox();
ice.open();
e.in();
ice.close();
}
}
class Elephant
{
public void in()
{
System.out.println("大象走进冰箱!!");
}
}
class Icebox
{
public void open()
{
System.out.println("打开冰箱门");
}
public void close()
{
System.out.println("关闭冰箱门");
}
}
对于这段代码,我又深入的想了一下,刚开始,我觉得开门和关门的行为应该是由大象这个对象来完成的,不过很快就被推翻了,因为,如果我下次要装进去不是大象呢!我要装个狮子,那我岂不是在狮子类里又要写一个开关门的行为,这样重复代码就变多了,肯定不行!
因此,我又换了一种思维,门是冰箱的一个属性,开门关门则是改变这个属性的状态,那我是否可以用一个boolean型的门的属性,然后开关门便是改变门的状态,开为true关为false,这样的话,还可以防止出现重复开门或关门的状况,因此,我把代码改成了如下:
class NewExplantIcebox
{
public static void main(String[] args)
{
Explant ex=new Explant();
Icebox ice=new Icebox();
ice.changeDoor();
ex.in();
ice.changeDoor();
}
}
class Explant
{
//大象进冰箱
public void in()
{
System.out.println("走进去");
}
}
class Icebox
{
//冰箱的门,默认为关闭
boolean door=false;
//改变门的状态
public void changeDoor()
{
if(door)
{
System.out.println("关冰箱门");
}else
{
System.out.println("开冰箱门");
}
door=!door;
}
}
OK!!运行良好,(*^__^*) 嘻嘻……
虽然不是很深奥的问题,但能写下自己的思考过程也蛮开心的!!! |
|