Java におけるインターフェースと抽象クラスの使用法と違い

WBOY
リリース: 2024-05-01 09:42:01
オリジナル
543 人が閲覧しました

インターフェイスと抽象クラスは、動作コントラクトを定義するために使用されます。インターフェイスはメソッドのシグネチャを定義し、抽象クラスにはメソッドの宣言と実装が含まれます。インターフェイスはインスタンス化できませんが、抽象クラスはインスタンス化できます。インターフェイスのメソッドはデフォルトでパブリック抽象化になりますが、抽象クラスのメソッドはデフォルトで保護された抽象化になります。インターフェイスは共通 API を定義するために使用され、抽象クラスは基本クラスを作成し、基本的な動作を提供するために使用されます。

Java 中接口和抽象类的用法和区别

Java におけるインターフェースと抽象クラスの使用法と違い

はじめに

インターフェースと抽象クラスは、どちらも動作コントラクトを定義するために使用される 2 つの非常に重要な概念ですが、それぞれに異なります。使い方や特徴など。

インターフェース

  • インターフェースは、一連の処理 (メソッド) を定義する特別なクラスですが、これらのメソッドは実装しません。
  • これは純粋な抽象型であり、インスタンス化できません。
  • インターフェースを実装するクラスは、インターフェースで宣言されたすべてのメソッドを実装する必要があります。
  • インターフェースは他のインターフェースを継承できますが、クラスを継承することはできません。
  • インターフェイス内のメソッドは、デフォルトではパブリック抽象です。

コード例:

public interface Drawable {
    void draw();
}
ログイン後にコピー

抽象クラス

  • 抽象クラスは、抽象メソッドと具象メソッドを含むクラスです。
  • 抽象メソッドは、宣言されるだけで実装されないメソッドです。
  • 抽象クラスをインスタンス化すると例外がスローされます。
  • 抽象クラスは、他のクラスまたは抽象クラスを継承できます。
  • 抽象クラスのメソッドはデフォルトで保護されています。

コード例:

public abstract class Shape {
    protected String color;
    public abstract void draw();
}
ログイン後にコピー

Usage

Interface: 複数のクラスで実装できる統合インターフェースなどのパブリック API を定義するために使用されます。

  • たとえば、Drawable インターフェイスは、特定の実装に関係なく、描画できる任意のクラスを表すことができます。 Drawable 接口可以表示任何可以绘制的类,而无需考虑具体的实现。

抽象类:用于创建一个类的基类,并提供一些基本行为和状态,同时允许子类定制这些行为和状态。

  • 例如,一个 Shape 抽象类可以提供一些形状的共同属性(如颜色),并定义一个抽象的 draw() 方法,用于子类实现具体的绘制行为。

差异

  • 接口只包含方法声明,而抽象类既包含方法声明也包含实现。
  • 接口不能实例化,而抽象类可以派生出子类。
  • 接口中的方法默认是公共抽象的,而抽象类中的方法默认是受保护的抽象的。

实战案例

考虑一个自定义形状绘制应用程序,其中需要显示各种形状。

  • 可以创建一个 Drawable 接口来定义绘制方法。
  • 然后可以创建 RectangleCircle 等形状的类,这些类实现 Drawable 接口并提供自己的绘制实现。
  • 应用程序可以遍历各种形状并调用 draw()
🎜抽象クラス🎜: クラスの基本クラスを作成し、いくつかの基本的な動作と状態を提供すると同時に、サブクラスがこれらの動作と状態をカスタマイズできるようにするために使用されます。 🎜🎜🎜たとえば、Shape 抽象クラスは、形状のいくつかの共通属性 (色など) を提供し、サブクラス実装用の抽象 draw() メソッドを定義できます。 特定の描画動作。 🎜🎜🎜🎜違い🎜🎜🎜🎜インターフェースにはメソッド宣言のみが含まれますが、抽象クラスにはメソッド宣言と実装の両方が含まれます。 🎜🎜インターフェースはインスタンス化できませんが、抽象クラスはサブクラスを派生できます。 🎜🎜インターフェースのメソッドはデフォルトでパブリック抽象ですが、抽象クラスのメソッドはデフォルトで保護された抽象です。 🎜🎜🎜🎜実際のケース🎜🎜🎜 さまざまな形状を表示する必要があるカスタム形状描画アプリケーションを考えてみましょう。 🎜🎜🎜Drawable インターフェイスを作成して描画メソッドを定義できます。 🎜🎜その後、RectangleCircle、およびその他の形状クラスを作成できます。これらのクラスは、Drawable インターフェイスを実装し、独自の描画実装を提供します。 🎜🎜アプリケーションはさまざまな図形をループし、draw() メソッドを呼び出してそれらを表示できます。 🎜🎜

以上がJava におけるインターフェースと抽象クラスの使用法と違いの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート