关于类、父类、抽象类、接口之间联系的一点点思考

最近稍微理了一下类、普通父类、抽象类、接口之间的联系,对它们的理解比之前稍微好了那么一点。

首先先了解一下什么是类,在这之前,我们需要了解一下java中对象的概念,其实java这种面向对象的程序语言就是为了描述我们所处的大千世界,那么java中的对象就是这个世界上一草一木的对应,比如我正在使用的这台电脑,我们寝室对面的一棵树等等,世界上每一个具体的东西都是一个对象,我想这也是java这种面向对象语言的由来。类呢?就是对对象的抽象化、概念化,用一个统一的代号来称呼具有相同特征的一堆对象,比如说:人类就是对我们人的统称,书就是对《java从入门到精通》《大话数据结构》等的统称。

了解了对象和类的基本概念后,接下来进入正题,我身边有两个兄弟,分别是笔记本电脑类和PC电脑类,他们有共同之处(都能上网打游戏),也有不同之处(笔记本方便携带,而PC就不行),但他们从小没有父亲,两个人相依相偎的游荡在这个世界上,有一天,他们找到了他们的亲生父亲-电脑类,他们开心极了,他们发现他们的父亲居然也能打游戏,他们终于想通了:打游戏这个功能是从父亲那里继承过来的,但他们又各自产生了一些变异,笔记本电脑变得容易携带,PC则不容易携带。他们的父亲电脑类又接着说道:你们再仔细观察观察我。过了一会儿笔记本电脑类兴奋的说:爸爸,你只是具有携带这个功能,但并没有指明携带是否方便。他们的父亲说:正因为我无法确定携带这个动作究竟是方便还是不方便,所以特地加了个abstract修饰,也正因为如此,我本身又不得不给我自己加个abstract紧箍咒,这也是我与普通父类的区别,对了,再告诉你们一个消息,其实你们还有其他的兄弟。说完他们的父亲就走了,他们不得不继续游荡下去。

只从上次这两兄弟的父亲告诉他们还有其他的兄弟之后,他们就一直捣腾着怎么联系其他兄弟,终于有一天他们找到了接口-联网接口,联网接口告诉他们:你们必须用implements实现我,才可以联系到你们的其他兄弟,他们很开心,在接口的帮助下很快联系到了他们的另外一个兄弟-量子计算机。

到这里相信大家对父类,抽象类,接口之间的联系稍微了解了一下,现在总结一下:

1:将子类共同的属性和方法提取出来,单独形成一个类-父类

2:如果父类中的方法无法具体化,就需要我们用abstract修饰,此时普通父类就变成了抽象类

3:由于子类只能有一个亲生父类,所以子类要想实现其他的一些功能就必须要实现接口,这就是接口的由来

下面我们在详细说说编程中的具体运用:

现在有两个类,分别是pc电脑类和笔记本


如果现在有10台pc电脑和10台笔记本电脑,需要我们找出他们之间运算速度最快的,怎么办?由于编程中我们直接将不同的类放在一起比较,所以一般我们可能先找出pc中运算最快的,然后找出笔记本运算最快的,最后在比较最快pc和最快笔记本,找到那个运算最快的。

有了父类之后,我们可以让上面两个类继承电脑类,运用向上造型,通过一次循环找出那个最快的电脑


是不是解决了无法直接比较两个类的问题,这就是父类和向上造型的魅力。

Ps:向上造型指的是父类引用指向子类对象

现在上述的coms[0]这台pc电脑想连接其他电脑,怎么办?我们需要让pc类实现连接接口,但是我们又知道coms[0]这个引用是点不出来connect这个方法的,这个时候就需要我们进行向下造型,然后再执行connect方法,是不是很赞。


通过上面的代码coms[0]就可以联系其他兄弟啦。

最后总结一下:造型(向上和向下)是父类和接口 之间的重要纽带,也只有造型才能让他们的作用发挥出来。