关于面向对象
众所周知,C 是面向过程的语言,Java 是面向对象的语言。
关于面向过程,还是很好理解的。一步一步的来就是面向过程嘛,把冰箱门打开,把大象放进去,再把冰箱门关上。它关注的解决问题的过程,有先后的顺序。
而面向对象,再来分析这个问题的时候。首先要明白何为对象?(好深奥啊。。)object 可以翻译为对象,但是我感觉它的另一个意思“物体”更好理解。就是在解决问题时,主要关注出现在问题中的有什么物体(其实就是对象)。
还是把大象放冰箱,首先就需要找出有哪些对象,(嗯。找对象,好像有点诱惑力)出现的就是两个对象嘛,大象,冰箱。而每个对象中可能会有不同的属性和方法 。比如对大象来说,它的属性就可以有重量、高度、宽度等等。对于冰箱来说呢,它也可以有长宽高这些属性,但是它还需要有些方法,比如把冰箱门打开这个操作就可以看成一个方法,当然关闭也可以看做一种方法。可以稍微体会下属性和方法的区别。
类和对象,继承,子类父类
对象是类的实例化,类是对象的模板
可以举这么个栗子(本来以为可以举生物——动物——人类的栗子,但是好像不太贴切)。假设100年以后,地球经历了大灾难,只有我一个人类活了下来,上帝现身给了我一个可以克隆生命的机器,只要我站在上面按下按钮就可以复制一个跟我一模一样的人类。于是我就什么都不干把自己固定在机器上,天天按按钮玩,所有的脏活累活都让我的克隆体干。那么我就是那个类,那那些克隆体就是一个个对象。有一天,上帝忽然看我很不爽,觉的我太low了,但是又舍不得我。于是就照着我的样子又造了一个全新的人类(要是夏娃就好啦。。),但是他为了让人类更好的干活,给这个人类加上了一双翅膀。我叫他“奠”,这是因为他已经不再是一个简简单单的人类啦,他已经是一个新的类了,这样“奠”也把自己固定在克隆机器上,也天天按按钮,制造一个个的他的克隆体去干活。同样,这些克隆体也就是他对应的一个个的对象,“奠”则是一个类。而我则是“奠”这个类的父类,“奠”类则是我这个类的子类。我们两的关系就是所谓的继承关系,因为他继承了我身上的所有特征(本来他是用这个“她”的,写到这句话时发现有些不合适。。),就是加了双翅膀。其实这个例子感觉也有些不合适,但就这样吧。