如何理解面向对象
1、记得当年,JAVA课第一讲就是面向对象,用老师的一句话“一切皆对象”,那么如何理解程序设计中的面向对象,我们重点关注下面向对象程序设计中的几个关键点,下面将以问答形式阐述(代码以JAVA示范,读者可联系其它面向对象语言):

2、*什么是对象,对象的方法/属性又是什么?
这里的对象可以是一切的事物,包括:人、物体等
属性即是该事务的一些特征,如:颜色、大小等
方法是事务的动作,如:跑,跳等
举个例子:
家里养了一只棕色的泰迪,它今年一岁半了,喜欢“汪汪”叫
这里的泰迪就是一个对象,“棕色、一岁半”都是它的属性,叫是它的动作(即方法),用代码示范:
class Teddy{
public Color color;//属性
public double age;//属性
public void bark(){}//方法
}

3、*怎么理解程序中的类?
所谓“类”,即分类、归类(--可能有点不太恰当,但是方便理解)
就是把具有相似特征的事物放在一起统称为类
例如:生物学上有:鸟类、哺乳类等划分
4、*什么是继承?
我们还拿上面的泰迪举例:
泰迪、腊肠、黄毛、斑点等,它们有犬类所共有的特征:都有眼睛、有鼻子、有耳朵、会叫、会跳。。。这些属性和方法都是从犬类继承过来的
这时我们就可以对上面泰迪的代码做些改动,首先定义一个犬类,它有一些通用的属性和方法
class Dog{
public Color color;//属性
public double age;//属性
。。。。
public void bark(){}//方法
}
class Teddy extends Dog{//泰迪继承了犬类,即拥有犬类的通有属性和方法
}
5、*什么是多态?
我们在上面的基础上再做一些改动,可以看出泰迪和腊肠都继承了犬类“叫”的动作,但是它们的叫又有些区别,像这不同的犬都用“叫”这个动作,但又有它们各自的特点,这就是多态
Dog类不变
class Teddy extends Dog{
@override
public void bark(){}
}
class Dachshund extends Dog{//腊肠
@override
public void bark(){}
}

6、*什么是封装?
这个其实比较好理解,拿现实生活的例子来说“汽车发动机”,如某国产轿车采用原装进口发动机,那么这个轿车生产商直接拿进口发动机来用,不知道发动机内部构造以及如何生产(PS:笔者衷心希望国产汽车能够强大起来)
class Engine{
private List<T> materials;
private List<T> parts;
。。。。
private Engine produce(){
............
}
/*****上面的原材料,零部件,生产工艺等等我们是看不到的***/
public Engine getEngine(){//只能得到现成的发动机
return produce();
}
}
