抽象类(abstract class)和java接口(interface in java)的区别

抽象类和接口都主要用于抽象,但是它们之间有很大的不同。两者都是Java的核心部分,但都有自己的应用程序用途。虽然这两个术语可能是同义词,但不能互换使用。...

抽象类和接口都主要用于抽象,但是它们之间有很大的不同。两者都是Java的核心部分,但都有自己的应用程序用途。虽然这两个术语可能是同义词,但不能互换使用。

两者之间有显著差异。虽然默认情况下接口方法是抽象的,但抽象可以同时包含抽象方法和非抽象方法。好吧,因为Java8,接口也有方法实现,它们可以有Java中的静态和默认方法。让我们详细研究一下两者的区别。

抽象类(abstract class)和java接口(interface in java)的区别

什么是java中的抽象类(an abstract class in java)?

Java中的抽象类是一个声明为抽象的类——它可能包含也可能不包含抽象方法。它与Java接口非常相似,只是它可以包含默认的方法实现。与面向对象编程一样,Java中的抽象是使用抽象类和接口实现的。在Java中,抽象意味着对用户隐藏不相关的细节,只关注关键的细节,从而提高效率,从而降低复杂性。关键字“abstract”用于在类声明中的class关键字之前创建一个抽象类。

抽象类可以包含也可以不包含抽象方法(没有主体的方法),但如果一个类至少有一个抽象方法,则必须将其声明为抽象的。但是,非抽象方法也只能在抽象类中使用,但只能实现默认行为。抽象类中的方法可以具有访问修饰符,例如private、public、static和protected,具体取决于可见性级别。抽象类不能被实例化,它不能提供100%的抽象,因为它可以有具体的方法。

什么是接口(an interface)?

接口虽然看起来像一个类,但实际上不是。因为Java不支持多继承,所以接口有时非常适合为类层次结构提供基础。接口更像是类的蓝图,在Java中也用于实现抽象。它包含抽象方法和静态常量。简单来说,接口是抽象方法的集合,用于指定类必须实现的行为。与抽象类不同,接口在Java中提供了完整的抽象。它可以像类一样同时具有方法和变量,但是在接口中声明的方法在默认情况下是抽象的。

java中抽象类与接口的区别

  1. Java中抽象类和接口的“多重继承”——尽管事实上抽象类和接口都主要用于抽象,但它们彼此有很大的不同。抽象类是类,接口是接口。这意味着虽然一个接口只能扩展另一个Java接口,但一个抽象类可以在Java中实现多个继承。Java不支持多继承,但是可以在Java中实现多继承。
  2. Java中抽象类和接口的“方法类型”——两者的第二个主要区别是,虽然接口只能有抽象方法,但抽象类可以有抽象方法和非抽象方法。但是,由于Java8,接口也可以有默认和静态方法。
  3. Java中抽象类和接口的“访问修饰符”——抽象类可以有公共、私有和受保护的访问修饰符,但是接口的方法是隐式公共和抽象的。不能对接口方法“”使用任何其他访问修饰符。
  4. Java中抽象类和接口的“实现”——抽象类可以提供接口的实现。另一方面,接口不能提供抽象类的实现。
  5. Java中抽象类和接口的“Keyword”–虽然“Abstract”关键字用于将抽象类方法声明为抽象,但接口则完全不同;它们只能有公共的、静态的final常量和方法声明。
  6. Java中抽象类和接口的“使用”——虽然接口是类型声明的理想选择,但抽象类最适合代码重用和演化的角度。接口看起来像一个类,但它不是一个类。
  7. Java中抽象类和接口的“可靠性”——抽象类和接口之间的另一个主要区别是前者比后者快一点,因为在Java中调用任何重写的方法之前,通常都会在接口中进行搜索。
  8. Java中抽象类和接口的“Final Variables”——接口中声明的变量默认为Final,而抽象类可能包含也可能不包含非Final变量。

抽象类(abstract class) vs. java接口:比较表(interface in java: comparison table)

抽象类 接口
Abstract关键字用于创建抽象类,并且可以与方法一起使用。 Interface关键字用于创建接口,但不能与方法一起使用。
一个类只能扩展一个抽象类。 一个类可以实现多个接口。
抽象类可以有抽象方法和非抽象方法。 接口只能有抽象方法。
默认情况下,变量不是最终变量。它可能包含非最终变量。 默认情况下,变量在接口中是最终的。
抽象类可以提供接口的实现。 接口不能提供抽象类的实现。
它可以有带实现的方法。 它提供了绝对的抽象,不能有方法实现。
它可以有公共、私有、静态和受保护的访问修饰符。 这些方法在Java接口中是隐式公开和抽象的。
它不支持多重继承。 它支持多重继承。
它是代码重用和进化的理想视角。 它非常适合于类型声明。

总结 - 抽象类要点(points on abstract class) vs. java接口(interface in java)

抽象类和抽象接口都用于抽象;然而,他们也有各自的分歧。两者的主要区别在于抽象方法。前者可能有也可能没有抽象的方法,后者则是隐含的抽象。抽象类可以有抽象方法和非抽象方法。另一方面,接口只能有抽象方法,因此它们不能有实现,这意味着接口不能有非抽象方法。不能实例化禁止创建对象的抽象类。另一方面,接口可能看起来像类,但实际上不是。

  • 发表于 2021-06-25 03:52
  • 阅读 ( 300 )
  • 分类:IT

你可能感兴趣的文章

包裹(package)和java接口(interface in java)的区别

Java中的Package和Interface的主要区别在于,Package有助于对类进行有条理的分类以方便访问和维护,而Interface则有助于实现多个继承和实现抽象。 Java是最流行的编程语言之一。Java的主要优点是它支持面向对象编程。这种方法允...

  • 发布于 2020-10-18 11:01
  • 阅读 ( 569 )

班(class)和接口(interface)的区别

班(class)和接口(interface)的区别 面向对象编程(OOP)是软件开发中的一种常见范式。它有助于使用类和对象为编程带来真实的场景。类是创建对象的蓝图。程序员可以用属性和方法创建一个类。学生和老师是客体。创建对象称...

  • 发布于 2020-10-24 04:25
  • 阅读 ( 256 )

继承(inheritance)和java接口(interface in java)的区别

继承(inheritance)和java接口(interface in java)的区别 Java是Sun Microsystems公司开发的一种编程语言。Java可以用来开发各种应用程序。它是一种支持面向对象、结构化等多种范式的语言,Java的主要优点是支持面向对象编程(OOP)。程序...

  • 发布于 2020-10-25 00:02
  • 阅读 ( 490 )

入门时应学习的10个核心java概念

... public interface List { public void add(Object obj); public Object get(int index); public void remove(int index);} ...

  • 发布于 2021-03-13 05:33
  • 阅读 ( 241 )

抽象类(abstract class)和c中的接口#(interface in c#)的区别

...让我们详细讨论一下两者的理论方面。 什么是抽象类(an abstract class)? 抽象类是一种特殊类型的类,它充当其他类的基,不能实例化。抽象类的实现逻辑由其派生类提供。为了使一个类抽象,使用了“abstract”修饰符,这意味着...

  • 发布于 2021-06-25 03:34
  • 阅读 ( 355 )

抽象类(abstract class)和java接口(interface in java)的区别

...们详细研究一下两者的区别。 什么是java中的抽象类(an abstract class in java)? Java中的抽象类是一个声明为抽象的类——它可能包含也可能不包含抽象方法。它与Java接口非常相似,只是它可以包含默认的方法实现。与面向对象编程...

  • 发布于 2021-06-25 03:52
  • 阅读 ( 300 )

数据抽象(data abstraction)和封装(encapsulation)的区别

...键术语 数据抽象、封装、面向对象 什么是数据抽象(data abstraction)? 数据抽象是指隐藏内部细节,只显示功能。换句话说,它隐藏了实现细节,只是向外界展示了特性。一个现实世界的例子是电视。用户不需要知道内部电子电...

  • 发布于 2021-06-30 17:01
  • 阅读 ( 1213 )

应用程序编程接口(api)和java框架(framework in java)的区别

...建软件的子程序定义、通信协议和工具。Java框架是一种抽象,在这种抽象中,提供通用功能的软件可以通过附加的用户编写的代码有选择地进行更改,从而提供特定于应用程序的软件。从这个定义来看,API和Java框架之间的区别...

  • 发布于 2021-07-01 01:02
  • 阅读 ( 536 )

工厂模式(factory pattern)和抽象工厂模式(abstract factory pattern)的区别

...ShapeFactory以获取所需的对象类型。 什么是抽象工厂模式(abstract factory pattern)? 抽象工厂模式使用超级工厂并创建其他工厂。它也被称为工厂的工厂。在这种模式中,接口创建相关对象的工厂,而不显式指定它们的类。换言之,...

  • 发布于 2021-07-01 06:13
  • 阅读 ( 187 )

包裹(package)和接口(interface)的区别

...st”,则import语句如下所示。 导入测试。*; 什么是接口(interface)? 接口是实现抽象和多重继承的机制。接口中的方法是抽象方法。这些方法没有任何实现。它也可以有变量或字段。它们可以是公共的、静态的或最终的。此外,...

  • 发布于 2021-07-01 09:47
  • 阅读 ( 350 )
vvxpi9x6z
vvxpi9x6z

0 篇文章

相关推荐