検索
ホームページJava&#&チュートリアルJava の 3 つの主要な機能: カプセル化、継承、ポリモーフィズム

Java の 3 つの主要な機能: カプセル化、継承、ポリモーフィズム

Jul 16, 2019 pm 04:32 PM
javaポリモーフィズムカプセル化継承する

オブジェクト指向の 3 つの主要な特徴は、カプセル化、継承、ポリモーフィズムであることはわかっています。ただし、これらの概念について常に混乱することがあります。これらの概念は、将来の抽象化指向プログラミングのための強固な基盤を築くために以下に整理されています。

カプセル化の概念は依然として理解しやすいです。クラスを定義できれば、カプセル化の概念は完全に理解できたと思います。以下に定義されるクラスはデータのカプセル化です。 #継承の利点は、コードの再利用です。継承されたサブクラスには、親クラスのすべてのプロパティとメソッドが自動的に含まれます。したがって、既存のクラスを継承するとは、これらのクラスのメソッドとフィールドを再利用することになります。

これに基づいて、サブクラスは新しいニーズを満たすためにいくつかの新しいメソッドとフィールドを追加することもできます。これは Java プログラミングの中核となるテクノロジーです。

では、相続が必要かどうかはどのように判断すればよいのでしょうか。 「is-a」関係は継承の明らかな特徴です。この文の意味は次のように解釈できます。 Student が person を継承する理由は、Student が person であるためです。そのような関係がなければ、相続の必要はありません。これはリスコフ置換原則の定義でもあり、サブタイプは親タイプを置換できなければなりません。 スーパークラスを拡張してサブクラスを定義する場合、サブクラスとスーパークラスの違いを指摘するだけで済みます。したがって、クラスを設計する際には、一般的なメソッドをスーパークラスに配置し、特殊な用途のメソッドをサブクラスに配置する必要があり、一般的な関数をスーパークラスに配置するというアプローチは、オブジェクト指向プログラミングでは非常に一般的です。

動的バインディングには、既存のコードを変更せずにプログラムを拡張できるという非常に重要な機能があります。したがって、ポリモーフィズムはオープンとクローズの原則の基礎です。

以下は、継承とポリモーフィック実装の具体的な例です。

abstract は抽象キーワードです。 (具象クラスから継承するよりも抽象クラスから継承する方が適切です)。

public abstract class Person {  // 抽象类
    private String name;  // 私有变量
    
    public String getName() {  // Getter方法
        return name;
    }    public void setName(String name) {  //Setter方法
        this.name = name;
    }        
    public Person(String name) {  // 构造函数,用于初始化name
        super();        this.name = name;
    }    public abstract String getDesc();  // 抽象类中的抽象方法。  只有声明,没有具体实现。
        public String toString(){      // toString方法覆盖了Object类的toString方法
         return name + getDesc();
      }

}

extends は継承されたキーワードです。 Student は Person を継承するため、Student には name 属性があります。

public class Student extends Person {  // 继承类
    private String major; // 新增加的数据    

    public String getMajor() {        return major;
    }    public void setMajor(String major) {        this.major = major;
    }    

    public Student(String name,String major) { // 构造函数用于初始化
        super(name);   // 调用超类构造函数
        this.major = major;
    }

    @Override    public String getDesc() {  // 必须实现超类中的抽象方法        // TODO Auto-generated method stub
        return " : a student, major is " + major;
    }

スーパークラスを継承するサブクラスは、(どの実装方法であっても) スーパークラスの抽象メソッドの定義を実装する必要があります。 。

public class Employee extends Person{
    private double salary;
    public double getSalary() {
        return salary;
    }public void setSalary(double salary) {
        this.salary = salary;
    } 
   public Employee(String name, double salary) {
       super(name);
       this.salary = salary;
    }

    @Override
    public String getDesc() {        // TODO Auto-generated method stub
        return " :a employee, salary is " + salary;
    }
}
public class Test {    public static void main(String[] args) {        // TODO Auto-generated method stub
        Person[] p=new Person[2];    
        p[0]=new Student("Mark", "IT");
        p[1]=new Employee("Jerry", 2000);        for (Person person : p) {
            System.out.println(person.getName()+person.getDesc());
        }
    }

}
実行結果

この例から、カプセル化なしでは継承がないこともわかります。継承がなければ、いわゆるポリモーフィズムは存在しません。 カプセル化、継承、ポリモーフィズム (特にポリモーフィズム) を理解することは、デザイン パターンを理解するための基礎です。

Java チュートリアルの詳細については、次のサイトをご覧ください:


Java チュートリアル

Java の 3 つの主要な機能: カプセル化、継承、ポリモーフィズム

以上がJava の 3 つの主要な機能: カプセル化、継承、ポリモーフィズムの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
高度なJavaプロジェクト管理、自動化の構築、依存関係の解像度にMavenまたはGradleを使用するにはどうすればよいですか?高度なJavaプロジェクト管理、自動化の構築、依存関係の解像度にMavenまたはGradleを使用するにはどうすればよいですか?Mar 17, 2025 pm 05:46 PM

この記事では、Javaプロジェクト管理、自動化の構築、依存関係の解像度にMavenとGradleを使用して、アプローチと最適化戦略を比較して説明します。

適切なバージョン化と依存関係管理を備えたカスタムJavaライブラリ(JARファイル)を作成および使用するにはどうすればよいですか?適切なバージョン化と依存関係管理を備えたカスタムJavaライブラリ(JARファイル)を作成および使用するにはどうすればよいですか?Mar 17, 2025 pm 05:45 PM

この記事では、MavenやGradleなどのツールを使用して、適切なバージョン化と依存関係管理を使用して、カスタムJavaライブラリ(JARファイル)の作成と使用について説明します。

カフェインやグアバキャッシュなどのライブラリを使用して、Javaアプリケーションにマルチレベルキャッシュを実装するにはどうすればよいですか?カフェインやグアバキャッシュなどのライブラリを使用して、Javaアプリケーションにマルチレベルキャッシュを実装するにはどうすればよいですか?Mar 17, 2025 pm 05:44 PM

この記事では、カフェインとグアバキャッシュを使用してJavaでマルチレベルキャッシュを実装してアプリケーションのパフォーマンスを向上させています。セットアップ、統合、パフォーマンスの利点をカバーし、構成と立ち退きポリシー管理Best Pra

キャッシュや怠zyなロードなどの高度な機能を備えたオブジェクトリレーショナルマッピングにJPA(Java Persistence API)を使用するにはどうすればよいですか?キャッシュや怠zyなロードなどの高度な機能を備えたオブジェクトリレーショナルマッピングにJPA(Java Persistence API)を使用するにはどうすればよいですか?Mar 17, 2025 pm 05:43 PM

この記事では、キャッシュや怠zyなロードなどの高度な機能を備えたオブジェクトリレーショナルマッピングにJPAを使用することについて説明します。潜在的な落とし穴を強調しながら、パフォーマンスを最適化するためのセットアップ、エンティティマッピング、およびベストプラクティスをカバーしています。[159文字]

Javaのクラスロードメカニズムは、さまざまなクラスローダーやその委任モデルを含むどのように機能しますか?Javaのクラスロードメカニズムは、さまざまなクラスローダーやその委任モデルを含むどのように機能しますか?Mar 17, 2025 pm 05:35 PM

Javaのクラスロードには、ブートストラップ、拡張機能、およびアプリケーションクラスローダーを備えた階層システムを使用して、クラスの読み込み、リンク、および初期化が含まれます。親の委任モデルは、コアクラスが最初にロードされ、カスタムクラスのLOAに影響を与えることを保証します

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

AtomエディタMac版ダウンロード

AtomエディタMac版ダウンロード

最も人気のあるオープンソースエディター

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

SecLists

SecLists

SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

VSCode Windows 64 ビットのダウンロード

VSCode Windows 64 ビットのダウンロード

Microsoft によって発売された無料で強力な IDE エディター