オブジェクト指向プログラミング (OOP) は、現実世界のエンティティをオブジェクトとしてモデル化するプログラミング パラダイムです。これらのオブジェクトにはプロパティ (属性) と動作 (メソッド) があります。 OOP は、カプセル化、継承、ポリモーフィズム、抽象化の概念に基づいています。
Java は、同時実行、クラスベース、オブジェクト指向のコンピューター プログラミング言語です。オブジェクト指向の利点
ソフトウェア開発を以下に示します:
Java のカプセル化は、オブジェクト内でデータ (属性) とメソッド (動作) をバンドルすることを含む、基本的なオブジェクト指向プログラミングの概念です。データの隠蔽とアクセス制御を提供し、データが保護され、定義された方法でのみアクセスされるようにします。
class Person { private String name; private int age; public Person(String name, int age) { this.name = name; this.age = age; } public String getName() { return name; } public int getAge() { return age; } } public class Main { public static void main(String[] args) { Person p = new Person("Sam", 21); System.out.println("Person Name: "+ p.getName()); System.out.println("Person Name: "+ p.getAge()); /* * p.name = "Anderson"; -> We couldn't modify the varibale value directly. It's Error ❗. * p.age = 20; */ } }
箱を想像してください。箱の中には私物が入っています。箱を見れば何が入っているかはわかりますが、箱を開けなければ直接触れたり、商品を交換したりすることはできません。これは Java のカプセル化に似ています。
Java におけるポリモーフィズムとは、異なるクラスのオブジェクトが同じメソッド呼び出しに異なる方法で応答する機能です。これは、柔軟性とコードの再利用性を可能にするオブジェクト指向プログラミングの基本的な概念です。ポリモーフィズムには、コンパイル時ポリモーフィズムと実行時ポリモーフィズムの 2 種類があります。
リモコンがあると想像してください。 「再生」ボタンを押すと、何かが再生されます。ただし、何を再生するかは、テレビ、DVD プレーヤー、音楽プレーヤーなど、制御しているデバイスによって異なります。
これは Java のポリモーフィズムに似ています。 「再生」ボタンは同じ方式ですが、対象(テレビ、DVDプレーヤー、音楽プレーヤー)によって挙動(何を再生するか)が異なります。
つまり、ポリモーフィズムとは、同じもの (メソッド) が、それを呼び出すオブジェクトに応じて異なる動作をする可能性があることを意味します。
interface Playable { void play(); } class TV implements Playable { public void play() { System.out.println("Playing TV show"); } } class DVDPlayer implements Playable { public void play() { System.out.println("Playing DVD"); } } class MusicPlayer implements Playable { public void play() { System.out.println("Playing music"); } } public class PolymorphismExample { public static void main(String[] args) { Playable[] devices = {new TV(), new DVDPlayer(), new MusicPlayer()}; for (Playable device : devices) { device.play(); } } }
クラスが親クラスから属性、プロパティ、メソッドを継承できるようにする継承の概念。これにより、コードの再利用性、モジュール性、クラス間の階層関係の作成が促進されます。
Java における継承は家系図のようなものです。子クラスは親クラスから特性を継承できます。これを行うには、いくつかの方法があります:
Java は多重継承を直接サポートしていませんが、インターフェースを使用して同様の結果を得ることができます。
class Animal { void makeSound() { System.out.println("Generic animal sound"); } void makeSound(int numberOfTimes) { for (int i = 0; i < numberOfTimes; i++) { System.out.println("Generic animal sound"); } } } class Dog extends Animal { @Override void makeSound() { System.out.println("Woof!"); } @Override void makeSound(int numberOfTimes) { for (int i = 0; i < numberOfTimes; i++) { System.out.println("Woof!"); } } } class Cat extends Animal { @Override void makeSound() { System.out.println("Meow!"); } @Override void makeSound(int numberOfTimes) { for (int i = 0; i < numberOfTimes; i++) { System.out.println("Meow!"); } } } public class PolymorphismExample { public static void main(String[] args) { Animal[] animals = {new Dog(), new Cat()}; // Method overloading: animals[0].makeSound(); animals[1].makeSound(3); // Method overriding: for (Animal animal : animals) { animal.makeSound(); } } }
抽象化とは、アイデアを特定のインスタンスから分離するプロセスであり、実装の詳細ではなく、独自の機能の観点からクラスを開発します。 Java は、すべてのメソッドの実際の実装を含めずに、インターフェイスを公開する抽象クラスの作成と存在をサポートします。抽象化手法は、クラスの実装の詳細をその動作から分離することを目的としています。
abstract class Shape { abstract double getArea(); } class Circle extends Shape { private double radius; public Circle(double radius) { this.radius = radius; } @Override public double getArea() { return Math.PI * radius * radius; } } class Rectangle extends Shape { private double length; private double width; public Rectangle(double length, double width) { this.length = length; this.width = width; } @Override public double getArea() { return length * width; } } public class ShapeExample { public static void main(String[] args) { Shape circle = new Circle(5.0); Shape rectangle = new Rectangle(4.0, 3.0); System.out.println("Circle area: " + circle.getArea()); System.out.println("Rectangle area: " + rectangle.getArea()); } }
車、自転車、飛行機のリモコンがあると想像してください。それぞれの車両は大きく異なりますが、リモコンの同じボタンを使用して各車両を始動、停止、移動できます。これはプログラミングにおける抽象化のようなものです。
抽象化
カプセル化
主な違い
Feature | Abstraction | Encapsulation |
---|---|---|
Focus | Essential features | Data protection |
Purpose | Simplification | Security, modularity |
Mechanism | Abstract classes, interfaces | Private fields, public methods |
Example | Vehicle interface | Person class with private fields and public methods |
本質的には:
OOP は、レゴ ブロックで構築するようなものだと考えてください。それぞれのレンガは、独自の形状と特性を持つオブジェクトです。レンガを組み合わせて、より大きく、より複雑な構造を作成できます。これらの概念を理解することで、より組織的で柔軟かつ効率的なコードを作成できます。
以上がJava でオブジェクト指向プログラミングをマスターする: 総合ガイド ☕♨の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。