接口与抽象类的区别
我个人认为有以下几点:
1.abstract class 在 Java
语言中表示的是一种继承关系,一个类只能使用一次继承关系。但是,一个类却可以实现多个interface。这弥补了类的多继承问题。
2.在abstract class
中可以有自己的数据成员,也可以有非abstarct的成员方法,而在interface中,只能够有静态的不能被修改的数据成员(也就是必须是
static final的,不过在 interface中一般不定义数据成员),所有的成员方法都是abstract的。
3.abstract class和interface所反映出的设计理念不同。其实abstract
class表示的是"is-a"关系,interface表示的是"like-a"关系。
注意:当一个行为与一个类的所属行为方法不相关联时,应该采用接口来实现这个行为,不能使用抽象类,否则违反面向对象的ISP(Interface
Segregation Principle)规则和OCP原则.
4.实现抽象类和接口的类必须实现其中的所有方法。抽象类中可以有非抽象方法。接口中则不能有实现方法。
注意:对于抽象类而言,实现抽象类的时候必须实现该抽象类的所有抽象方法,可以不实现非抽象方法,非抽象方法必须要有方法体,而抽象方法不能有方法体.
5.接口中定义的变量默认是public static final
型,且必须给其初值,所以实现类中不能重新定义,也不能改变其值。当然,变量定义也可以是friendly.
6.抽象类中的变量默认是 friendly 型,其值可以在子类中重新定义,也可以重新赋值。
7.接口中的方法默认都是 public,abstract 类型的。
分享到:
相关推荐
C#类、接口、虚方法和抽象方法-接口与抽象类的区别实例 C#类、接口、虚方法和抽象方法-接口与抽象类的区别实例
接口与抽象类的区别 抽象方法是必须实现的方法。就象动物都要呼吸。但是鱼用鳃呼吸,猪用肺呼吸。 动物类要有呼吸方法。怎么呼吸就是子类的事了。 现在有很多讨论和建议提倡用interface代替abstract类,两者从...
// 接口中的方法只能通过对象调用,不能通过类名调用 }}在Java中,接口和抽象类都是用于实现多态性的重要工具,但它们之间存在显著的区别: 1. **接口(Interface)**: - 接口是一个完全抽象的类型,它只包含...
### 抽象类与接口的区别 #### 一、理解抽象类与接口的基本概念 在面向对象编程中,抽象类和接口都是重要的概念,用于描述共有的特性或行为,但它们在实现方式和用途上有所不同。 **抽象类**: - **定义**:抽象类...
接口与抽象类区别 在软件开发中,接口和抽象类是两个常用的概念,但它们之间的区别却让许多人感到困惑。那么,什么是抽象类和接口?它们之间有什么区别?下面,我们就来详细地探讨这个问题。 一、抽象类 抽象类是...
本文将详细探讨接口与抽象类的区别,并结合实际编程场景来分析何时使用接口、何时选择抽象类。 #### 二、接口的基本概念 接口是一种特殊的抽象类型,它只定义方法、属性、索引器和事件等成员的签名,但不提供这些...
### 接口与抽象类的区别及其应用场景 #### 面向接口编程与面向对象编程的关系 面向接口编程(Programming to Interfaces)与面向对象编程(Object-Oriented Programming, OOP)并非并列的概念,而是后者的一个重要...
### Java接口与抽象类的区别 在Java编程语言中,接口(Interface)与抽象类(Abstract Class)都是用于实现抽象和多态的重要工具。它们都允许我们定义行为的标准,但它们的使用场景、特点以及语法存在一定的差异。...
这意味着不能创建抽象类的对象。 ```csharp public abstract class A { // ... } // 错误示例:A a = new A(); // 抽象类不能实例化 ``` 3. 抽象类可以包含抽象属性和方法,但一旦包含了抽象方法,就必须将类声明...
-java中接口与抽象类的区别详解 java是一种面向对象的编程语言,在java中有两种方式可以定义抽象类:接口(interface)和抽象类(abstract class)。在实际开发中,这两种方式都是非常重要的,但是它们之间有很多...
创建抽象类的目的是为了提供一个通用的基类,让其子类继承并实现具体的功能。抽象类可以有构造方法,也可以包含非抽象方法(即已经实现的方法)和成员变量。当一个类包含至少一个抽象方法时,该类必须声明为抽象类,...
抽象类的主要目的是为子类提供一种共有的基本结构,子类必须实现所有抽象方法才能被实例化。 2. **接口**:接口是一组抽象方法的集合,它规定了一种行为规范,但不提供具体的实现。实现该接口的类必须提供接口中...
JDK8接口的默认与静态方法-接口与抽象类的区别详解 JDK8接口的默认与静态方法是Java 8中引入的一项重要特性,它使得接口更加灵活和强大。下面我们将详细介绍JDK8接口的默认与静态方法,以及接口与抽象类的区别。 ...
下面我们将详细讲解接口和抽象类的区别,并探讨它们在编程中的应用。 抽象类是特殊的类,只能被继承不能被实例化。抽象类可以包含抽象方法,这是普通类所不能的。抽象方法只能声明于抽象类中,且不包含任何实现,...
本文旨在深入探讨接口与抽象类的区别,以及如何根据具体需求选择合适的工具。 #### 接口:定义协议的契约 接口在Java中被设计用来定义一个类或对象的行为规范,即它应该能够做什么,而不是如何做。接口是一种完全...
5. **接口与抽象类的区别**:对比两者在使用上的差异,包括继承的数量限制(一个类只能继承一个抽象类,但可以实现多个接口)和成员类型(抽象类可有实例变量,接口则没有)。 6. **适配器模式**:可能会介绍如何...
##### 抽象类的应用 - **例子**:假设我们正在设计一个图形处理应用,其中有一个`Shape`抽象类,包含抽象方法`draw()`和`area()`。`Circle`、`Rectangle`等具体图形类可以继承`Shape`抽象类,并实现这些方法。 ```...
### Java中的接口与抽象类的区别 #### 定义与特性 **接口(Interface)**: - 接口是一种完全抽象的类,它只定义了一组方法的签名,没有实现任何方法的具体代码。 - 接口中的方法默认为公共的抽象方法(public ...
下面将从多个方面详细介绍抽象类与接口的区别。 ### 一、定义与基本语法 #### 抽象类 抽象类是一种特殊的类,它不能被实例化,只能作为其他类的父类来使用。抽象类中可以包含抽象方法(没有方法体的方法)和具体...