早上起来上班,天空飘着绵绵细雨,顺着这个雨在那边思考,突然联想到编程里的类和对象。记得上学那会,类和对象总是理解不清,不知道何为类何为对象。现在想来,也不知道自己有没有真正的理解。就着这次的思考,也谈谈我对类和对象的思考。因为是个人理解,难免有偏差。
我总喜欢把编程融入生活,我觉得编程就是另一种生活,它可以映射到很多生活的场景。很多计算机的概念都是晦涩难懂,所以很多人都觉得编程很难。扯远了,还是接着正题说。为什么会想到类和对象呢,就是因为这场雨[貌似很多事情都能和雨扯上关系],雨为什么叫雨呢,为什么不叫雪,不叫其他的呢,就是因为它自身带了一些属性。比如说他是透明的,他是液态等等,那什么是雪呢?雪是不透明的,是固态的等等。我们是通过什么去区分他们的呢,就是通过这些属性。也许你会说我看到他们我就能够区分他们,并不是因为这些属性来区分他们的,这是一个常识。那么如果我把这些属性去掉之后,你还能通过肉眼区分他们吗?我觉得是不可以的。
如果我将雨和融化的雪放在一起,我不告诉你哪个是雪,哪个是雨,你还能区分吗?为什么不能够区分,因为雪失去了固态和透明的属性,它变成了水。而这个属性恰恰是雨的属性,所以你很难区分出来。讲到这里我觉得可以引出类和对象了。
百度百科上说: 对象是对客观事物的抽象,类是对对象的抽象。第一句怎么理解,因为在计算机的里没有客观事物的,所以只能将这些客观事物做一个抽象,用一些属性和行为表示他们;第二句怎么理解,这些属性在忽略特定值的情况下,可以将他们化为一类,那么这就是类。对象和类对应到上面的例子中就是雨,雪和水。下面给大家看看代码,有个直观的感受。
package com.freefitter.entity;
public class Water {
//是否透明
private boolean isTransparent;
//是否是液体
private boolean isLiquid;
//温度
private String temperature;
public boolean getIsTransparent() {
return isTransparent;
}
public void setTransparent(boolean transparent) {
isTransparent = transparent;
}
public boolean getIsLiquid() {
return isLiquid;
}
public void setLiquid(boolean liquid) {
isLiquid = liquid;
}
public String getTemperature() {
return temperature;
}
public void setTemperature(String temperature) {
this.temperature = temperature;
}
}
下面是测试类:
package com.freefitter.entity;
public class TestWater {
public static void main(String[] args) {
//now they are all water
Water rain = new Water(); //this is rain object
Water snow = new Water(); //this is snow object
//set is liquid
rain.setLiquid(true);
snow.setLiquid(false);
//set is transparent
rain.setTransparent(true);
snow.setTransparent(false);
//set temperature
rain.setTemperature("Zero");
snow.setTemperature("Less than Zero");
//now they are different
}
}
不知道自己能够把自己的想法表达出几分,不能完全表达的话,后续在写写吧,毕竟水平有限,不喜轻喷。