抽象类 通常是一类事物的公共部分的抽象 简单的说 我要开发一个“门” 但是是什么门? 这个时候 大伙都不清楚这就是一个门的抽象 但是既然是开发门 那么我们要开发什么门? 实木门? 大铁门? 但是 不管是实木门还是大铁门 首先它是一个门 这就是对同类事物公共部分的抽象 但是那为什么不把门定义成一个接口呢? 原因很简单 "类" 是描述一类事物的模版 接口是用来描述事物的吗? 我们说面向对象 万物皆对象 但是对象是由谁产生的? 毫无疑问 是类产生的 而不是接口 因为类是描述对象的模版 接口不是 但是 接口是什么? 他就是一组协议 什么是协议? 举个简单的例子 你要开发一个实木门 首先你会创建一个实木门的对象 但是 我想加上防盗设施 在一个对象的基础上让其符合一组协议 这个协议就是"防盗设施" 让其具备了防盗的接口 然后你再创建个防盗锁对象 二者一结合 防盗门诞生了 所以 实际开发中 更多的时候 抽象类通常作为代码模版 接口作为通讯协议 |