OOP (オブジェクト指向プログラミング) という用語を聞いて、まるで SF 映画から飛び出してきたような響きだと思ったことがあるなら、あなたはそうでしょう。一人ではありません。しかし、心配しないでください。それほど複雑ではありません。 ?車の運転を学ぶことを想像してみてください。一度基本を知ってしまえば、それが第二の習慣になります。まあ、OOP も同じようなものですが、プログラミングの場合です。
このブログでは、OOP の 4 つの柱 を詳しく説明し、実際の例を使用して説明します。スムーズな乗り心地になるので、バックルを締めてください。 ??
定義: カプセル化とは、車の中に自分だけが知っている秘密のコンパートメントを設けるようなものです。誰がアクセスできるかを制御します。技術的に言えば、オブジェクトの内部状態を隠し、パブリック インターフェイス (メソッド) を介したアクセスのみを許可することです。
実際の例: 車を運転していると想像してください。エンジンがどのように動作するかを知る必要はありません。アクセルペダルを踏むだけで、車は爆走します!エンジンは隠されています(ありがたいことに)。同様に、Java では、カプセル化によってオブジェクトの内部動作が隠蔽されます。内部の複雑な詳細を気にすることなく、パブリック メソッドを使用してオブジェクトを操作できます。
コード例:
class Car { // Private variables - hidden from outside private String engineStatus = "off"; // Public method to control the engine public void startEngine() { engineStatus = "on"; System.out.println("The car engine is now " + engineStatus); } // Public method to check the engine status public String getEngineStatus() { return engineStatus; } } public class Main { public static void main(String[] args) { Car myCar = new Car(); myCar.startEngine(); // You can't directly access the engine, but you can use the public methods System.out.println("Engine status: " + myCar.getEngineStatus()); } }
一言で言えば: カプセル化とは、エンジンを好奇心旺盛な手から守りながら、メカニックについて過度に考えずに運転できるようにすることです。
定義: 継承は、世代を超えて受け継がれる家族のレシピのようなものです。何かを継承するときは、それを最初から作成する必要はなく、ただ受け取るだけです。 Java では、あるクラスが別のクラスからフィールドとメソッドを継承できます。
実際の例: あなたのお父さんが優秀な整備士だとしましょう。あなたはそれらのスキルを継承します。最初からすべてを学ばなくても、車を修理できるようになりました。 Java では、子クラス (サブクラス) は親クラス (スーパークラス) からフィールドとメソッドを継承できます。
コード例:
// Parent class class Vehicle { public void honk() { System.out.println("Beep beep!"); } } // Child class inherits Vehicle class Car extends Vehicle { public void drive() { System.out.println("Driving a car!"); } } public class Main { public static void main(String[] args) { Car myCar = new Car(); myCar.honk(); // Inherited from Vehicle class myCar.drive(); // Car-specific method } }
簡単に言うと: 継承により、優れた遺伝子を継承するのと同じように、既存のコードを再利用できます。あなたがお父さんの機械スキルを受け継いだのと同じように、Car クラスは Vehicle からクラクションを鳴らす機能を継承しています。
定義: ポリモーフィズムは、変身できるスーパーヒーローのようなものです。ある瞬間、彼らは飛んでいます。次に、目からレーザーを発射します。これにより、オブジェクトは状況に応じてさまざまな形をとることができます。
実際の例: ドライバーを思い浮かべてください。フェラーリでもホンダ・シビックでも、車を運転するときはアクセルを踏んで速度を上げます。同じアクション (ペダルを踏む) は両方の車で機能しますが、結果は異なる場合があります (一方が他方よりもはるかに速い??)。
コード例:
// Parent class class Animal { public void sound() { System.out.println("Some generic animal sound"); } } // Child class - specific to Dog class Dog extends Animal { public void sound() { System.out.println("Woof woof!"); } } // Child class - specific to Cat class Cat extends Animal { public void sound() { System.out.println("Meow!"); } } public class Main { public static void main(String[] args) { Animal myDog = new Dog(); // Dog is an Animal Animal myCat = new Cat(); // Cat is an Animal myDog.sound(); // Outputs: Woof woof! myCat.sound(); // Outputs: Meow! } }
簡単に言うと: 多態性を使用すると、犬を動物のように扱うことができますが、犬に音を出すように要求すると、犬は吠えることを知っています。同じアクションでも、オブジェクトに応じて異なる動作が発生する可能性があります。かなりクールですね?
定義: 抽象化は、複雑なものを単純化して表示したものに似ています。スマートフォンを使用するとき、内部でどのように機能するかを知る必要はありません。アプリの使用方法を知っていれば十分です。プログラミングにおける抽象化とは、複雑さを隠して必要な詳細のみを示すことを意味します。
実際の例: 車を運転するときは、ステアリング ホイール、ペダル、ボタンを操作します。内燃エンジンがどのように動作するかは気にする必要はありません (ありがたいことに!)。同様に、Java では、抽象化により複雑な詳細が隠蔽され、重要な機能のみが公開されます。
コード例:
// Abstract class abstract class Car { // Abstract method (no implementation) abstract void start(); // Concrete method (with implementation) public void stop() { System.out.println("The car is stopped."); } } // Subclass provides implementation for the abstract method class Tesla extends Car { public void start() { System.out.println("Tesla starting with a silent hum..."); } } public class Main { public static void main(String[] args) { Car myTesla = new Tesla(); myTesla.start(); // Calls the abstract method's implementation in Tesla myTesla.stop(); // Calls the concrete method in Car } }
簡単に言うと: 抽象化により、必要のない詳細を気にすることなく、重要なことに集中できます。
基本を理解すれば運転が自然になるのと同じように、OOP もその基本原則を理解すれば簡単に感じることができます。
これらを理解すれば、プロのようにコーディングできるようになり、あらゆるギアを熟知した自動車愛好家と同じように、コードのあらゆる部分をマスターできるようになります。 ??
追伸 まだ学習中の人は、誰もがかつては初心者だったということを思い出してください。コーディングを続ければ、すぐに髪に風を感じながらオブジェクト指向プログラミングの高速道路を駆け抜けることになるでしょう。 ?
以上がJava で OOP を理解する: 車の運転を学ぶのと同じの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。