对象
定义:对象是系统中用来描述客观事物的一个实体,它是构成系统的一个基本单位。
一个对象由一组属性和对这组属性进行操作的一组服务构成。 简单来说,一位计算机老师就可以是一个对象,他/她是现实中存在的人,也具有自己的属性:例如是一位男老师,180的身高,75kg的体重,熟悉java代码等等,可以理解为静态特征。而他由于他的属性(写代码),他可以去进行一系列的服务(操作),比如去写一个java的小程序,这是他的动态特征。
抽象和类
抽象定义:抽象(化)忽略事物的其他特征,只注意那些与当前目标有关的本质特征,从而找出事物的共性。
类定义:类是具有相同属性和服务的一组对象的集合,它为属于该类的全部对象提供了统一的抽象描述,其内部包括属性和服务两个主要部分。类的作用是用来创建对象,对象是类的一个实例。
简单来说,抽象是再面对对象编程中很重要的一点,因为一个具体事物所带有的属性非常多,也可以很细枝末节,所以我们需要针对待解决问题的特点来进行抽象,把具体事物去粗取精,得到和问题密切相关的属性。**例如还是上面的老师的例子,我们需要考虑的问题是一个人的BMI,那么这个老师是否精通Java就不在我们的考虑范围之内了。**而类则是抽象一群具体事物得到的,他们具有相同的属性。**例如这里有一群老师,有教授离散数学、英语、计算机科学等等,我们就可以把他们进行抽象,抽象为老师这一个类,而这个类包含的属性就是:性别、身高、体重和教授专业。**其实,类的定义完全可以“望文生义”,我们是一类人,也就是说我们必然有某些地方的相同之处,才能称为一“类”。 不难发现,其实对象、类和抽象可以使用线性关系来描述:
即:对一定数量的对象进行抽象,那么我们就可以得到一类,这个类包含一定数量的有相似属性的对象。而对于类进行具体化,那么我们就可以得到一个具体的对象。
一般类和特殊类:
如果类A有类B的全部特点,同时A还有自己的特点,那么A就是B的特殊类,B是A的一般类。其实很好理解,就像上面老师这个类,其实就是人这个类的一个特殊类。同时,特殊类也叫做子类,而一般类成为父类。
继承、消息和聚合
从上面的特殊类和一般类很好理解继承的概念:特殊类拥有一般类的全部属性和服务,称作特殊类对一般类的继承。也可以说是子类继承父类,“子承父业”嘛。
消息:对象通过它对外提供的服务在系统中发挥作用。当系统中的其他对象或其他系统成分(在不要求完全对象化的语言中,允许有不属于任何对象的成分,例如C++程序中的main函数)请求这个对象、执行某个服务时,该对象就响应这个请求,完成该服务。
例子:顾客要求修理自行车。顾客->修车人
聚合:一个复杂的对象由其他若干相对简单的对象作为其构成部分,则称复杂的对象为聚集,简单的对象是成分。这种关系成为聚合。聚合其实是一种特殊的关联:而关联更像是平等的关系,聚合则是包含关系:has a。
抽象类与接口
抽象类(abstract class):如果一个类没有包含足够信息来实例化一个具体对象,那么这个类就是抽象。
而在面向对象的领域,抽象类主要用来进行类型的隐藏。我们刚刚说过,抽象类的信息不足,因此无法进行实例化,那么我们可以构造出一个固定的一组行为的抽象描述,但是这组行为却能够有任意个可能的具体实现方式。这个抽象描述就是抽象类,而这一组任意个可能的具体实现则表现为所有可能的派生类。
至于接口,这篇文章:https://blog.csdn.net/sun_shine56/article/details/86621481 我认为写得非常清楚了,没必要再造轮子。