Rumah > Java > javaTutorial > teks badan

Menguasai Pengaturcaraan Berorientasikan Objek dalam Java: Panduan Komprehensif ☕♨

Susan Sarandon
Lepaskan: 2024-10-08 16:09:30
asal
423 orang telah melayarinya

Mastering Object-Oriented Programming in Java: A Comprehensive Guide ☕♨

Pengaturcaraan Berorientasikan Objek

Pengaturcaraan Berorientasikan Objek (OOP) ialah paradigma pengaturcaraan yang memodelkan entiti dunia sebenar sebagai objek. Objek ini mempunyai sifat (atribut) dan tingkah laku (kaedah). OOP adalah berdasarkan konsep pengkapsulan, pewarisan, polimorfisme dan pengabstrakan.

Java ialah bahasa pengaturcaraan komputer yang serempak, berasaskan kelas dan berorientasikan objek. Kelebihan berorientasikan objek
pembangunan perisian ditunjukkan di bawah:

  • Pembangunan modular: Ini menjadikan kod lebih mudah untuk diselenggara dan diubah suai.
  • Kebolehgunaan semula kod: Ini mengurangkan keperluan untuk menulis kod yang sama beberapa kali.
  • Kebolehpercayaan dan fleksibiliti kod yang dipertingkatkan: Ini memudahkan untuk mencipta perisian yang teguh dan boleh disesuaikan.
  • Peningkatan pemahaman kod: Ini meningkatkan kebolehbacaan dan kebolehselenggaraan kod.

Enkapsulasi

Encapsulation in Java ialah konsep pengaturcaraan berorientasikan objek asas yang melibatkan penggabungan data (atribut) dan kaedah (tingkah laku) dalam objek. Ia menyediakan penyembunyian data dan kawalan akses, memastikan data dilindungi dan hanya diakses melalui kaedah yang ditetapkan.

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;
        */
    }
}

Salin selepas log masuk

Bayangkan sebuah kotak. Di dalam kotak adalah barang peribadi anda. Anda boleh melihat kotak dan mengetahui isi dalamnya, tetapi anda tidak boleh menyentuh atau menukar item secara langsung tanpa membuka kotak itu. Ini serupa dengan enkapsulasi dalam Java.

Polimorfisme

Polymorphism, dalam Java, ialah keupayaan objek dari kelas yang berbeza untuk bertindak balas kepada panggilan kaedah yang sama dengan cara yang berbeza. Ia merupakan konsep asas dalam pengaturcaraan berorientasikan objek yang membolehkan fleksibiliti dan kebolehgunaan semula kod. Terdapat dua jenis Polymorphism Compile-Time Polymorphism dan Run-Time Polymorphism.

Contoh

Bayangkan anda mempunyai alat kawalan jauh. Anda boleh menekan butang "main", dan ia akan memainkan sesuatu. Tetapi perkara yang dimainkan bergantung pada peranti yang dikawalnya: TV, pemain DVD atau pemain muzik.

Ini seperti polimorfisme di Jawa. Butang "main" adalah kaedah yang sama, tetapi gelagat (apa yang dimainkannya) berbeza bergantung pada objek (TV, pemain DVD, pemain muzik).

Jadi, polimorfisme bermaksud perkara yang sama (kaedah) boleh mempunyai gelagat berbeza bergantung pada objek yang memanggilnya.

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();
        }
    }
}
Salin selepas log masuk

Warisan

Konsep warisan yang membolehkan kelas mewarisi atribut, sifat dan kaedah daripada kelas induk. Ini menggalakkan kebolehgunaan semula kod, modulariti dan penciptaan perhubungan hierarki antara kelas.

Warisan di Jawa seperti salasilah keluarga. Kelas anak boleh mewarisi sifat daripada kelas induk. Terdapat beberapa cara berbeza untuk melakukan ini:

  • Warisan Tunggal: Seorang anak, seorang ibu bapa.
  • Warisan Berbilang Peringkat: Anak mewarisi daripada ibu bapa, yang juga seorang anak.
  • Warisan Hierarki: Berbilang anak daripada satu ibu bapa.

Java tidak menyokong berbilang warisan secara langsung, tetapi anda boleh menggunakan antara muka untuk mendapatkan hasil yang serupa.

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();
        }
    }
}
Salin selepas log masuk

Abstraksi

Abstraksi ialah proses mengasingkan idea daripada kejadian tertentu dan dengan itu, membangunkan kelas dari segi kefungsian mereka sendiri, bukannya butiran pelaksanaannya. Java menyokong penciptaan dan kewujudan kelas abstrak yang mendedahkan antara muka, tanpa memasukkan pelaksanaan sebenar semua kaedah. Teknik abstraksi bertujuan untuk memisahkan butiran pelaksanaan kelas daripada gelagatnya.

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());
    }
}
Salin selepas log masuk

Bayangkan anda mempunyai alat kawalan jauh untuk kereta, basikal dan kapal terbang. Anda boleh menggunakan butang yang sama pada alat kawalan jauh untuk memulakan, menghentikan dan mengalihkan setiap kenderaan, walaupun ia sangat berbeza. Ini seperti abstraksi dalam pengaturcaraan.

Perbezaan antara Abstraksi dan Enkapsulasi

Abstraksi

  • Fokus: Menyembunyikan kerumitan asas objek, mendedahkan ciri penting sahaja.
  • Tujuan: Memudahkan kod dengan memfokuskan pada perkara yang dilakukan oleh objek dan bukannya bagaimana ia melakukannya.
  • Mekanisme: Dicapai melalui kelas abstrak dan antara muka.
  • Contoh: Antara muka kenderaan yang mentakrifkan kaedah seperti mula(), berhenti() dan gerak(), tanpa mendedahkan pelaksanaan khusus untuk setiap jenis kenderaan (kereta, basikal, dll.).

Ekapsulasi

  • Fokus: Melindungi data objek daripada akses atau pengubahsuaian yang tidak dibenarkan.
  • Tujuan: Meningkatkan keselamatan kod, modulariti dan kebolehselenggaraan.
  • Mekanisme: Dicapai dengan menjadikan ahli data peribadi dan menyediakan kaedah awam untuk mengakses atau mengubah suainya.
  • Contoh: Kelas Orang dengan medan peribadi seperti nama dan umur serta kaedah awam seperti getName() dan setAge() untuk mengakses atau mengubah suai medan ini.

Perbezaan Utama

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

Pada dasarnya:

  • Abstraksi ialah tentang perkara yang dilakukan oleh objek.
  • Encapsulation ialah tentang cara objek melakukannya.

Fikirkan OOP seperti membina dengan batu bata LEGO. Setiap bata adalah objek yang mempunyai bentuk dan sifat tersendiri. Anda boleh menggabungkan bata untuk mencipta struktur yang lebih besar dan kompleks. Dengan memahami konsep ini, anda boleh mencipta kod yang lebih teratur, fleksibel dan cekap.

Atas ialah kandungan terperinci Menguasai Pengaturcaraan Berorientasikan Objek dalam Java: Panduan Komprehensif ☕♨. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:dev.to
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan