2016年1月

聊聊面向对象

什么是面向对象?

想要学习Java的同学应该都会或多或少地听说过面向对象这个说法,那么究竟什么是面向对象?面向对象有什么好处呢?理解面向对象对我们的学习,编码有什么好处呢?下面我们就来简单了解下:
首相,大家得记住一点:面向对象是一种思想,一种思考方式。就像我们平时看人待物一般,为什么面向对象这么受推崇,就是因为它和我们人类对事物的认知方式比较接近。举个例子,比如我们要去电脑城攒机,相信很多朋友都有过这种经历。

那么我们去到店里面应该怎么做呢?告诉店员我们要配一台电脑,然后告诉他要求:颜色,性能要求,外形等等,然后店员就会根据我们的需要给我们写一个单子,上面依次列着CPU、主板、内存、显卡……,我们逐个去对比,砍价,最后敲定,装机。在这个过程中,我们首先是要一个对象——电脑。然后在这个对象的基础上对他的属性进行要求限制:颜色要黑的、外形要大方的、显示器要21寸的等。总之,我们就是在确定一个对象的基础上,然后对它身上的各项属性进行细化的要求。

再比如我们周末在家,准备好好休息下,洗洗衣服,给自己做顿好吃的,顺便在网上买几件东西。于是,早上起床,我们洗漱完毕,要做很多事情。但是怎么做呢?洗漱是一件事,洗衣服是一件事,做饭是一件事,上网购物又是一件事。这些事情我们都可以将它们看作一个个对象,然后以各种自己认为合适的方式去组合它们,安排它们的先后执行顺序。当然,有人说一件一件做起来比较麻烦,让洗衣机洗衣服,自己可以开始做饭。这个当然可以了,这个多个对象同时启动,在Java中有多线程的概念,就是来解决这个问题的,在后面我们会讲到。
归类
另外,在说到一个概念:所有的对象,任何的对象都可以归类的。比如猪,牛,马,羊之类的我们就可以归类为动物;牙刷,牙膏,毛巾之类的我们可以归为生活用品一类。但是,在这里我们要注意的是,一件东西我们可以以它不同的属性为主,让它归到不同的类别里面去:桌子,我们可以归到生活用品,可以归到木制品,可以归到黄颜色的物体一类(假设这个桌子是黄颜色的)。总之,就是说一个对象它不一定仅仅属于某一个类别,它有可能既是A,又是B,搞不好还是C。

上面我们说到,可以按照属性(上面讲的都是静态的)讲对象归类,那么一个对象除了前面提到的属性之外还有一个很重要而且很特别的属性——行为。行为也可以归属到对象的属性里面去,它也是属于这个对象的。只是它表现的是这个对象可以干什么。(下面提到的属性指的就是上面提到的静态属性,不包括行为)

对一个对象来说,它所拥有的属性和对象是有关系的。一般情况下,一个行为就是在告诉我们如何去使用或者改变这个对象的某个属性。比如说:人。人是一个对象,他有眼睛,鼻子,耳朵;他也有很多行为,比如说吃,喝,听等等。都是说的这个行为如何去做一些和它的属性相关的东西。

上面说的都是单个的对象,那么多个对象之间会有什么样的联系呢?
关联
打个比方,小明是个对象,小明的爸爸——大明也是一个对象。那么这两个对象之间就有了一些继承的关系:小明继承了爸爸的大眼睛属性,却没有像爸爸一样,长成一个大嘴巴。在这里,大眼睛就是两个对象间继承过来的,而大嘴巴却是小明爸独有的。于是在两个对象之间就有了一个继承的关系,继承的对象之间,有相同的属性和方法,但是也可以有自己独特的属性和方法存在。

本篇内容总结一下就是下面这个图了,写的时候参考下大家的说法,不过还是写上了自己举的例子,有问题欢迎拍砖:
简图

聊聊类

初学Java, 一定会接触到类这个概念,定义类的方式很简单: [修饰符] class 类名称 撇开修饰符暂时不谈,我们这篇文章先来聊聊什么是类,为什么会有类这个东西存在! 我们先从面向对象说起……

面向对象

在很久很久以前,我们的前辈们用的编程语言里是没有类这个概念的,那时候也没有什么面向对象的说法,大家最熟悉的C语言就是这么一个例子,没有面向对象的概念,也没有类这个东西的存在。当然,C语言里面的结构体也是蛮好用的。20世纪60年代开发的Simula 67,是面向对象语言的鼻祖。 它首次提出了对象的概念。但是,我们这一代的同学们都是通过C++/Java才正式接触到面向对象的。

- 阅读剩余部分 -