写给自己看的java教程。

1.面向对象

“如果你要洗衣服,你可以选择手洗,但丢进洗衣机里明显更方便。”

面向对象设计是一种程序设计技术。它将重点放在数据(即对象)和对象的接口上。如果你想洗衣服,你首先想到的是找一个会洗衣服的工具(对象),把洗衣服的事交给工具做,这里的洗衣机就是对象。如果你学过c,对比一下c语言的面向过程设计,以洗衣服为例:

c语言:把问题分解成一个一个步骤,每个步骤用函数实现,即把脏衣服放进盆里->放洗衣粉->加水->手搓->漂洗->甩干

java:先定义一个洗衣机的类,这个类中包含了洗衣服所需要的方法,创建一个洗衣机的对象,然后你要做的是把脏衣服扔进洗衣机里。

二者的优劣对比:

面向对象:占用资源相对较高,速度相对较慢

面向过程:占用资源相对较低,速度相对较快

这么一看好像面向对象与面向过程相比毫无优点可言?占用又高,速度又慢,别急,接下来我们要了解面向对象的三大特性

1.封装性

所谓封装,也就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏。

在上述例子中,洗衣机就是封装了洗衣服这个功能的类的对象。这里的类指的是一种规范,如果厂家要制造一台洗衣机,必须按照洗衣机的规范来制造,比如说洗衣机必须要有滚筒,要有进水口,要有控制按钮等等。这些都是一个洗衣机所必需的拥有的“属性”,而洗衣机还要有最重要的洗衣服的功能,要有甩干的功能,这些就是规范中规定的洗衣机必须要有的“方法”。按照这个规范生产出来的就是洗衣机的“对象”。

又比如,格力在国家制定的洗衣机规范之下有自己制定的规范,格力生产的洗衣机都必须有指纹解锁功能。而其他品牌的洗衣机不是按照格力的规范来生产的洗衣机,就没有办法使用指纹解锁的功能,这里就类似于“类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏”

2.继承

继承是指这样一种能力:它可以使用现有类的所有功能,并在无需重新编写原来的类的情况下对这些功能进行扩展。

还是以洗衣机为例,之前我们说过,类就相当于洗衣机的生产规范,那么类的继承呢?一个类如果继承了另一个类,那么这个类就叫做被继承类的子类,被继承类就是父类,子类可以直接拥有父类所有公开的(public)“属性”和“方法”。这里,格力的洗衣机规范就是国家的洗衣机规范的子类,格力生产出来的洗衣机必须符合国家规范的所有要求,同时可以添加一些自己独有的特别功能。

继承的关系是一种“is-a”的关系,即小学生是一个人,但一个人不一定就是小学生,这里的子类和父类与父与子的关系不是一回事,毕竟儿子不可能是他爹。

3.多态

多态性是面向对象编程的又一个重要特征,它是指在父类中定义的属性和方法被子类继承之后,可以具有不同的数据类型或表现出不同的行为,这使得同一个属性或方法在父类及其各个子类中具有不同的含义。在国家制定的洗衣机规范中,规定了洗衣机必须能有洗衣服的功能,而格力洗衣机通过超声波洗衣服,其他的洗衣机通过水洗衣服,格力的是干洗,其他的是普通水洗。

 

猜你喜欢

转载自www.cnblogs.com/zzybot/p/11542373.html