java接口与抽象类有啥区别?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java接口与抽象类有啥区别?相关的知识,希望对你有一定的参考价值。

参考技术A 一个是接口,一个是抽象类,接口这相当于你定义了一些规范,然后下面的用这个规范去开发 参考技术B

抽象类是用来捕捉子类的通用特性的,而接口则是抽象方法的集合;抽象类不能被实例化,只能被用作子类的超类,是被用来创建继承层级里子类的模板,而接口只是一种形式,接口自身不能做任何事情。

其次,抽象类可以有默认的方法实现,子类使用extends关键字来继承抽象类,如果子类不是抽象类的话,它需要提供抽象类中所有声明方法的实现。而接口完全是抽象的,它根本不存在方法的实现,子类使用关键字implements来实现接口,它需要提供接口中所有声明方法的实现。

抽象类可以有构造器,除了不能实例化抽象类之外,它和普通Java类没有任何区别,抽象方法可以有public、protected和default这些修饰符。而接口不能有构造器,是完全不同的类型,接口方法默认修饰符是public,不可以使用其它修饰符。

接口是引用类型的,和抽象类的相似之处有三点:

1、不能实例化。

2、包含未实现的方法声明。

3、派生类必须实现未实现的方法,抽象类是抽象方法,接口则是所有成员(不仅是方法包括其他成员)。

Java面试题|接口和抽象类有什么区别?

每天一道面试模拟真题及解析





课前导读

●回复"每日一练"获取以前的题目,持续更新!

我希望大家积极参与!有什么不懂可以加小千微信进行讨论

★把面试准备工作,拆分、融入到平时每天


接口和抽象类有什么区别?

参考答案:


  • 抽象类可以有构造方法;接口中不能有构造方法。
  • 抽象类中可以有普通成员变量;接口中没有普通成员变量。
  • 抽象类中可以包含非抽象普通方法;接口中的所有方法必须都是抽象的。
  • 抽象类中的抽象方法的访问权限可以是 public、protected 和 default;接口中的抽象方法只能是 public 类型的,并且默认即为 public abstract 类型。
  • 抽象类中可以包含静态方法;JDK1.8 前接口中不能包含静态方法,JDK1.8 及以后可以包含已实现的静态方法。
public interface TestInterfaceStaticMethod {

static String getA() {
return "a";
}
}
  • 抽象类和接口中都可以包含静态成员变量,抽象类中的静态成员变量可以是任意访问权限;接口中变量默认且只能是 public static final 类型。
  • 一个类可以实现多个接口,用逗号隔开,但只能继承一个抽象类。
  • 接口不可以实现接口,但可以继承接口,并且可以继承多个接口,用逗号隔开。



—— 推 荐 阅 读 ——

你点的每个“在看”,我都认真当成了喜欢
点击 阅读原文 抢预约免费试听课程名额

以上是关于java接口与抽象类有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章

java中接口和类有啥区别 java中接口和类有啥区别

java中接口和类有啥区别java中接口和类有啥区别

java 8中的接口和抽象有啥区别? [复制]

接口和抽象类有啥区别? [复制]

Typescript中的接口和抽象类有啥区别?

Java面试题|接口和抽象类有什么区别?