`

抽象类、接口的区别 和 抽象类可以不实现接口的全部方法

 
阅读更多


 

抽象类和接口的区别:
  

  抽象类里面可以有非抽象的方法,接口里只能有抽象方法。

  抽象类中的抽象方法声明时不能有大括号,而接口中的所有方法都没有大括号。

 抽象类(abstract class):

  a.抽象类是仅供派生的类,无法实例化一个抽象类,只能实例化从它派生的类。

  b.抽象类的主要特征在于它包含抽象成员 (abstract member),抽象成员是不具有实现的一个方法或属性,其作用是强制所有派生类提供实现。

  c.由于抽象成员应当是要被重写(override)的,因此这类成员会自动成为virtual成员,而且不能这样显示地声明。

  d.抽象成员不能是private的,否则派生类看不见他们。

 接口(interface):

  a.接口是抽象类的变体。

  b.接口的一个关键特征是它既不包含实现,也不包含数据。

  c.字段(也就是数据)不能出现在一个接口中,如果一个接口要求派生类包含特定的数据,那么它会使用属性而不是字段。由于属性不会包含任何实现作为接口声明的一部分,所以他不会引用一个支持字段。

  d.接口的宗旨是定义由多个类共同遵守的一个契约 ,所以接口中所有成员都必须为public类型。

抽象类可以不用实现接口的全部方法:

   有的时候需要将接口和抽象类配合起来使用,这样可以为开发者提供相当的便利性,开发者觉得哪个方便就选用哪个。这样的抽象类称为便利类。此时,便利类并不需要实现接口的所有方法,可以留给继承它的子类去实现它们。

  这么做并非是没有意义的,当你自己写的类想用接口中个别方法的时候(注意不是所有的方法),那么你就可以用一个抽象类先实现这个接口(方法体中为空),然后再用你的类继承这个抽象类,这样就可以达到你的目的了,如果你直接用类实现接口,那是所有方法都必须实现的。

分享到:
评论

相关推荐

    C#类、接口、虚方法和抽象方法-抽象类和接口的相同点和区别

    1. 抽象类可以定义字段、属性和方法实现,而接口仅能声明这些成员。 2. 抽象类是一个不完整的类,需要派生类完成其定义,接口则更像一种行为规范。 3. 接口可以被多重实现,而抽象类只能被单一继承。 4. 抽象类常...

    详细解析Java中抽象类和接口的区别

    1. **抽象类**:抽象类是一种不能被实例化的类,它可以包含抽象方法(没有实现的方法)和具体方法(有实现的方法)。抽象类的主要目的是为子类提供一种共有的基本结构,子类必须实现所有抽象方法才能被实例化。 2....

    接口与抽象类区别

    接口与抽象类区别 在软件开发中,接口和抽象类是两个常用的概念,但它们之间的区别...抽象类是一种特殊的类,它可以定义字段、属性、方法实现,而接口是一种特殊的抽象类,它只能定义属性、索引器、事件、和方法声明。

    抽象类和接口 区别分析

    - **抽象类**:可以包含抽象方法和具体实现方法。 - **接口**:默认情况下,接口中的方法都是抽象的;自Java8起,接口可以包含默认方法和静态方法。 4. **访问控制**: - **抽象类**:可以使用任何访问修饰符。 ...

    Java 接口和抽象类

    抽象类和接口都可以实现多态性。在上面的练习中,我们使用抽象类和接口来实现多态性。在 LivingThing 抽象类中,我们定义了一个抽象方法 dance(String dancingStyle),然后在 Human 和 Monkey 中实现了该方法。在 ...

    java 抽象类与接口的区别

    3. 方法实现:抽象类中的抽象方法可以有默认实现,而接口中的方法没有默认实现,除非是在Java 8及以上版本中引入的默认方法和静态方法。 4. 访问修饰符:抽象类中的方法可以有不同的访问修饰符,而接口中的所有方法...

    Java中的类、抽象类和接口的区别和联系

    Java中的类、抽象类和接口的区别和联系

    C#中抽象类和接口的区别.txt

    综上所述,虽然抽象类和接口在实现多态方面具有相似的目标,但它们之间存在明显的区别。选择使用哪一种取决于具体的应用场景和个人的设计偏好。理解这些差异有助于更好地设计出健壮、可维护的软件系统。

    抽象类和接口的区别

    在面向对象编程中,抽象类和接口是两种非常重要的概念,它们在软件设计和实现过程中发挥着不可替代的作用。本文将深入探讨这两种概念的区别,帮助开发者更好地理解和运用它们。 #### 一、定义 1. **抽象类**:抽象...

    C#类、接口、虚方法和抽象方法-接口与抽象类的区别实例

    C#类、接口、虚方法和抽象方法-接口与抽象类的区别实例 C#类、接口、虚方法和抽象方法-接口与抽象类的区别实例

    C#抽象类与接口方法

    抽象类不一定全部由抽象方法组成,也可以有具体的实现。在C#中,抽象方法只能在抽象类中定义。 另一方面,接口(Interface)更像是一个完全抽象的契约,它定义了一组必须被实现的方法。接口使用`interface`关键字...

    java抽象类与接口区别

    抽象类通常包含一个或多个抽象方法(没有方法体的方法),以及一些实现了的方法和字段。 - **目的**:抽象类主要用于定义一个基本的类框架,允许子类继承并根据具体需求覆盖或实现抽象方法。 - **特点**: - 抽象类...

    基于Java抽象类和接口实现疯狂动物城

    本项目主要包括项目开发环境搭建、不同功能的类的设计、抽象类的设计、接口的设计、及其继承抽象类重写和接口实现类等具体功能的实现。 ●工程项目搭建与游戏初始化功能实现(2学时) ; ●动物城成员列表与动物信息...

    Java抽象类和接口和继承之间关系

    在Java中,抽象类(abstract class)和接口(interface)都是用来描述对象的行为和状态的,但它们之间有着明显的区别。 首先,让我们来看一下抽象类。抽象类是一种特殊的类,它不能被实例化,仅供子类化使用。抽象...

    抽象类与接口的区别

    ### 抽象类与接口的区别 #### 一、理解抽象类与接口的基本概念 在面向对象编程中,抽象类和接口都是重要的概念,用于描述共有的特性或行为,但它们在实现方式和用途上有所不同。 **抽象类**: - **定义**:抽象类...

    java 抽象类与接口的练习

    然而,抽象类可以包含已实现的方法和字段,而接口不能。 接口与抽象类的选择取决于具体的设计需求。如果关注的是行为的规范,且可能有多个实现者,那么接口是更好的选择。如果需要共享实现细节或者提供默认行为,...

    java利用接口和抽象类改写求圆的面积和梯形的面积.docx

    接口和抽象类都可以包含抽象方法,这些方法在实现接口或继承抽象类的具体子类中必须被实现。 尽管在一定程度上接口和抽象类看起来非常相似,甚至在某些场景下可以互换使用,但实际上它们在设计理念上存在显著差异。...

    抽象类和接口的详细区别和联系

    抽象类中可以包含抽象方法(没有实现体的方法)和具体方法(有实现体的方法)。一个类如果继承了抽象类,则必须重写其中的所有抽象方法,除非该类本身也声明为抽象类。 **特点:** 1. **封装行为**:抽象类可以定义...

    Java源代码:抽象类和接口

    在Java中,抽象类是一种不能被实例化的类,它主要用来作为其他类的基类,提供部分或全部未实现的方法。抽象类通过使用`abstract`关键字声明。例如: ```java abstract class Animal { abstract void makeSound(); ...

Global site tag (gtag.js) - Google Analytics