C语言是一门面向过程的语言,而Java是一门面向过程的语言,对于其中的区别,可以简单理解为:面向过程是在方法的层面复用,而面向对象是隐藏了方法和类的细节,直接在整个对象上复用。
简单粗暴的举个例子,路上搭车,我们只需要对司机说要去哪儿,就走了,我们不用去关心车子的油门在哪儿,刹车在哪儿,要走那条路。这就是面向对象。反之,就是面向过程。
面向对象的基本思想是 ,从现实世界中客观存在的事物出发来构造软件系统,并在系统的构造中尽可能的运用人类的自然思维方式。
面向对象更加强调运用人类在日常的思维逻辑中经常采用的思想方法与原则,如抽象、分类、继承、聚合、多态等。
一、对象和类的概念
对象是用计算机语言对问题域中事物的描述,对象通过“属性(attribute)”和“方法(method)”来分别对应事物所具有的静态属性和动态属性。(属性就是类的成员变量)
类是用于描述同一类型的对象的一个抽象的概念,类中定义了这一类对象具有的静态和动态属性。
类可以看成一类对象的模板,对象可以看成该类的一个具体实例。
我们创建的多个对象往往是有联系的,通常对象之间的关系可以分为以下几类:
•继承(XX是一种XX)
具有层次关系或者可以用树状结构来描述对象关系时,可以考虑使用继承,继承的好处是子类可以容易的使用父类的属性和方法,缺点是子类和父类绑定在一起,不利于后期维护。
在UML中,继承通常是使用空心三角+实线来表示。
•关联
如果A和B有关联,那么说明A内部可能会使用到B,但是A和B本身还是独立的关系,通常B会作为A的成员变量存在。
在UML中,关联通常是使用实线箭头来表示,箭头方向是A指向B。默认是双向关联不用加箭头
•聚合(松散的整体和部分)
如果A和B是聚合的,那么说明A和B是“弱拥有”的关系,它们不是独立的关系,但是A和B的生命周期可以使不同的,通常B也是会作为A的成员变量存在。
在UML中,聚合通常是使用空心菱形+实线箭头来表示。
•组合(密不可分的聚合)
如果A和B是组合的,那么说明A和B是“强拥有”的关系,它们不是独立的关系,并且生命周期也是一样的,通常B作为A的成员变量存在,并且在A的构造函数中进行初始化。
在UML中,组合通常是使用实心菱形+实线箭头表示。
•依赖
假设A类的变化引起了B类的变化,则说名B类依赖于A类。大多数情况下,依 赖关系体现在某个类的方法使用另一个类的对象作为参数。
在UML中依赖通常使用虚线箭头表示。
•实现
在这种关系中,类实现了接口,类中的操作实现了接口中所声明的操作。在UML中,类与接口之间的实现关系用带空心三角形的虚线来表示。
二、Java与面向对象
♢对象是Java程序的核心,在Java程序中万事万物皆对象
♢对象可以看成是静态属性(成员变量)和动态属性(方法)的封装体
♢类是用来创建同一类型的对象的“模板”,在一个类中定义了该类对象所应具有的成员变量及方法
♢J2SDK提供了很多类供使用