java中接口和抽象类的区别(保证你一看就懂)

简介: 先单独说一点,让你可以在朋友面前装逼:接口也能被继承,只不过是被接口继承

先单独说一点,让你可以在朋友面前装逼:接口也能被继承,只不过是被接口继承


对比:


1、都能包含抽象的方法,这些抽象的方法用于描述类具备的功能,不提供具体的实现(jdk1.8允许接口有一个default的实现方法)

2、接口是对事物行为的抽象,而抽象类是对事务本质的抽象;

3、接口中的变量必须给出初始值,抽象类可以不给;

4、一个类只能继承一个抽象类,但可以实现多个接口;

5、抽象类中可以写非抽象的方法,从而避免在子类中重复书写它们,这样可以提高代码的复用性,这是抽象类的优势;接口中只能有抽象的方法;


针对第二点和第四点举个例帮助理解:


对于抽象类:比方说有公鸡、母鸡、公狗、母狗,我们可以抽象出两个更高级的类,鸡类和狗类,因为你不能又是鸡又是狗,所以你只能继承其中一个,这就是为什么抽象类只能单继承


对于接口:众所周知,鸡都会唱、跳、rap,于是,我们可以把这些鸡的基本操作抽象成接口A,而有的鸡通过练习两年半可能学会打篮球,那么对于这种鸡的高端操作我们可以再抽象出一个接口B,重点来了,对于常规鸡,这种鸡只会唱跳rap,所以只需要实现接口A;那对于一些高端鸡,这种鸡既会唱跳rap又会打篮球,我们就同时实现接口A和接口B,这就是为什么接口可以多实现,skr~;


相关文章
|
22小时前
|
存储 Java
【JAVA学习之路 | 进阶篇】Map接口及其实现类及常用方法
【JAVA学习之路 | 进阶篇】Map接口及其实现类及常用方法
|
22小时前
|
Java 索引
【JAVA学习之路 | 进阶篇】List接口常用方法
【JAVA学习之路 | 进阶篇】List接口常用方法
|
23小时前
|
Java
【JAVA学习之路 | 提高篇】创建与启动线程之二(继承Thread类)(实现Runnable接口)
【JAVA学习之路 | 提高篇】创建与启动线程之二(继承Thread类)(实现Runnable接口)
|
23小时前
|
Java 编译器
【JAVA学习之路 | 提高篇】接口(interface)
【JAVA学习之路 | 提高篇】接口(interface)
|
23小时前
|
Java
【JAVA学习之路 | 提高篇】抽象类与抽象方法(abstract)
【JAVA学习之路 | 提高篇】抽象类与抽象方法(abstract)
|
23小时前
|
Java
【JAVA学习之路 | 基础篇】==与equals方法的区别
【JAVA学习之路 | 基础篇】==与equals方法的区别
|
1天前
|
Java 编译器
java类和对象:继承、多态、接口、抽象类-2
java类和对象:继承、多态、接口、抽象类
8 0
|
1天前
|
Java 编译器
java类和对象:继承、多态、接口、抽象类-1
java类和对象:继承、多态、接口、抽象类
6 0
|
2天前
|
IDE Java 编译器
Java之抽象类和接口
3.clone()方法 浅拷贝那里讲了,这里就不讲了。
12 3
|
7天前
|
存储 Java 编译器
Java中的抽象类与接口,在阿里工作5年了
Java中的抽象类与接口,在阿里工作5年了