使用java面向对象概念之把大象装进冰箱

By | 2017年 2月 13日

一直想写一篇介绍面向对象的文章,面向对象对于初学者来说,不好理解。于是设计了一个把大象装进冰箱的程序,先看代码。

如何把大象装进冰箱?

  • (人或机器)把冰箱门打开
  • (人或机器)把大象装进去
  • (人或机器)把冰箱门关上

所以程序可以这样设计了:

冰箱是一个对象,大象也是一个对象,所以写两个类;

冰箱有门和放东西的空间,这是冰箱的属性;不需要用到大象的属性;

冰箱有开门和关门这两种行为;大象有走进冰箱这一种行为;

先写冰箱类:

再写大象类:

最后是main()方法:

运行结果:

在这里先简单说一下面向对象的三大特征,然后再说说代码中的体现。

  • 封装:属性可以用来描述同一类事物的特征,行为可描述一类事物可做的操作,而封装就是把属于同一类事物的共性(包括属性和行为)归到一个类中,以方便使用。

  • 继承:由于封装,使得有共同特征的一类事物的所有描述信息都被归于一个类之中,但有些事物虽然有共性,但还是存在区别的。比如把冰箱这个类的品牌、容量、制冷等共性封装起来,但有的冰箱还能智能控温。智能控温冰箱有普通冰箱一样的有共性,但我们不能把智能控温这一行为也封装到冰箱类里面去,智能控温是智能控温冰箱的特征行为之一。为了省事地封装智能控温冰箱(代码的复用,这也是继承存在的原因之一),可以让智能控温冰箱取继承冰箱类:

  • 多态:能站在抽象的角度去描述一件事,而针对这件抽象的事, 对于每个个体(具体)又能找到其自身的行为去执行, 这就是多态.比如说冰箱按用途可分为冷藏箱、冷藏冰冻箱、冰冻箱。冷藏箱至少有一个冷藏室,但没有冰冻室;冷藏冰冻箱至少有一间冷藏室、一间冰冻室;冰冻箱至少有一间冰冻室,可有冷冻食品储藏室。它们都同属冰箱类,都有各自的行为去收纳物品。

分析代码中的面向对象思想的体现:

  • 封装:通过访问修饰符private把冰箱里的东西、门的打开和关闭状态封装起来变为冰箱类的私有属性,外部只能通过公共的方法去访问这些属性。

  • 继承:假如要把大象关进海尔冰箱,只需要写一个海尔冰箱类去继承冰箱类(冰箱类的所有属性和行为都会被海尔冰箱类继承过来),然后让大象走进海尔冰箱即可。

  • 多态:大象有很多品种,每个品种进冰箱的方式也不一样。比如让亚洲象走进去、赶非洲草原象进去、把非洲森林象抬进去等。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注