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

algorain

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

如何把大象装进冰箱?

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

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

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

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

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

先写冰箱类:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
package com.rain.demo;
public class Fridge {
//冰箱类
private static String Goods;//冰箱里的物品属性
private boolean state; // 冰箱门的状态
public void OpenDoor(){ //打开冰箱
this.state = true;
System.out.println("冰箱门打开");
}
public void CloseDoor(){//关闭冰箱
this.state = false;
System.out.println("冰箱门关闭");
}
public void Set_Goods(String name){//放入物品
this.Goods = name;
}
public void Get_Goods(){ //获取里面的物品
System.out.println("里面是"+Goods);
}
}

再写大象类:

1
2
3
4
5
6
7
8
9
package com.rain.demo;
public class Elephant {
//大象类
public void Walk_Fridge(){
Fridge fridge = new Fridge();
fridge.Set_Goods("大象");
System.out.println("大象走进了冰箱");
}
}

最后是main()方法:

1
2
3
4
5
6
7
8
9
10
11
12
13
package com.rain.demo;
public class demo {
//主类
public static void main(String[] args) {
Fridge fridge = new Fridge();
Elephant elephant = new Elephant();
fridge.OpenDoor();
elephant.Walk_Fridge();
fridge.CloseDoor();
System.out.print("冰箱里有什么:");
fridge.Get_Goods();
}
}

运行结果:

1
2
3
4
冰箱门打开
大象走进了冰箱
冰箱门关闭
冰箱里有什么:里面是大象

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

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

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

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

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

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

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

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

  • Title: 使用java面向对象概念之把大象装进冰箱
  • Author: algorain
  • Created at: 2017-02-13 22:44:09
  • Updated at: 2023-05-14 21:39:50
  • Link: http://www.rain1024.com/2017/02/13/java-article55/
  • License: This work is licensed under CC BY-NC-SA 4.0.
 Comments
On this page
使用java面向对象概念之把大象装进冰箱