|
发表于 2022-4-15 15:29:36
|
显示全部楼层
本帖最后由 AnisHan 于 2022-4-15 15:35 编辑
理解起来很简单,比如你有两个类(比如是动物),你需要创建一个动物类然后创建两个子类 猫和狗,这时候你发现两个子类有共同方法,你就像抽象两个方法,让他们继承(这样有助于多态)但是class要求你方法都要实现,而动物类这个基类的方法似乎比较抽象不需要具体实现。于是就有了抽象类,它支持不要方法体的函数(也就是纯虚函数, 抽象函数)。
然后你发现,抽象类仍然可以定义普通方法和成员变量,抽象的不够彻底,于是就出现了接口。
接口可以多实现,这是一个小优点,接口的非default方法是强制要求实现类什么的实现的,抽象类可以创建普通方法,这样子类也可以用(怎么说呢,类似模板一样)。
一般接口创建的叫”标准“,抽象类创建的就是额 子类的抽象,这些抽象的方法也可以当作”标准“,但是这个标准可能不太行,不够抽象也不可以多继承。
抽象类不允许private方法
比如closeable就是个接口,这个有了这个接口就定义了可以关闭的标准,子类肯定都要有个close函数。还有例子就是链接数据库的功能叫JDBC,但是市面上数据库这么多,Oracle不可能给他们做适配,而是他们给Java做适配,但是也不能让他们设计的用法一人一个样(因为这样Java程序员肯定不爽)所以就设计了一个接口,数据库开发者实现接口的方法有没有附加的内容就无所谓了,这样就统一了标准,JDBC的用法都差不多了。
关于概念你不要纠结这么多,没有语法要求接口 抽象类你怎么用都行,具体使用就看后期学习就行,毕竟这东西实际开发才遇得到,你学习几乎不用写(以后学注解要用接口)。
这就和有些人写Win32程序不写窗口过程,直接在消息循环写程序一样(这样写肯定不行,有些地方会出问题但是简单程序可以运行)学编程没必要死磕定义。
|
|