Rumah Java javaTutorial Pengaturcaraan Berorientasikan Objek || Enkapsulasi

Pengaturcaraan Berorientasikan Objek || Enkapsulasi

Jul 18, 2024 pm 12:11 PM

Object Oriented Programming || Encapsulation

Seperti yang kita semua tahu bahawa enkapsulasi adalah salah satu daripada 4 tiang OOPS dan kita boleh menggunakannya untuk menyembunyikan data dan menambah beberapa sekatan untuk melaksanakan operasi pada pembolehubah contoh kelas yang mana kami ingin memastikan bahawa enkapsulasi telah dilakukan dengan sempurna.
Secara amnya Kami telah diberitahu bahawa kita perlu menyembunyikan pembolehubah untuk dibuat supaya tiada siapa yang boleh mengubahnya kecuali kelas itu sendiri di mana pembolehubah ini telah ditakrifkan. Jadi untuk mengakses pembolehubah ini di luar kelas (jika perlu) kami mentakrifkan kaedah pengambil dan penetap supaya kami boleh melaksanakan operasi yang diperlukan berkaitan dengan contoh vairbale itu.
Rujuk Kod Contoh Java di bawah::

// Class for a bank account Holder
public class BankAccountHolder {

    // Private fields to store account information
    private String accountNumber;
    private String accountHolderName;
    private double balance;

    // Public constructor to initialize a new BankAccount
    public BankAccount(String accountNumber, String accountHolderName, double initialBalance) throws Exception {
        setAccountNumber(accountNumber);
        setAccountHolderName(accountHolderName);
        setBalance(initialBalance);
    }

    // Public getter for accountNumber
    public String getAccountNumber() {
        return accountNumber;
    }

    // Private setter for accountNumber
    private void setAccountNumber(String accountNumber) throws Exception {
        if (accountNumber != null && !accountNumber.isEmpty()) {
            this.accountNumber = accountNumber;
        } else {
            throw new Exception("Invalid account number.");
        }
    }

    // Public getter for accountHolderName
    public String getAccountHolderName() {
        return accountHolderName;
    }

    // Public setter for accountHolderName
    public void setAccountHolderName(String accountHolderName) throws Exception {
        if (accountHolderName != null && !accountHolderName.isEmpty()) {
            this.accountHolderName = accountHolderName;
        } else {
            throw new Exception("Invalid account holder name.");
        }
    }

    // Public getter for balance
    public double getBalance() {
        return balance;
    }

    // Private setter for balance
    private void setBalance(double balance) throws Exception {
        if (balance >= 0) {
            this.balance = balance;
        } else {
            throw new Exception("Invalid initial balance.");
        }
    }
}
Salin selepas log masuk

Dalam contoh di atas, kami mempunyai 3 pembolehubah sebagai accountNumber, accountHolderName, baki sebagai kaedah persendirian dan kami telah mentakrifkan getter dan setter untuk setiap 3 ini supaya Jika digunakan kelas lain mahu menggunakan pembolehubah contoh, mereka boleh gunakan dengan mudah.
Tetapi bukan itu sahaja, andaikan kita mahu 2 lagi kaedah di sini juga supaya kita boleh mendeposit dan mengeluarkan akaun ini.
Sila ambil perhatian bahawa di sini kami tidak membincangkan keselamatan peringkat aplikasi dan kami mengandaikan bahawa pasukan kami telah melakukan tugas yang sempurna untuk memberi kebenaran kepada pengguna.
Jadi dengan dua kaedah baharu semasa melaksanakan kerja mengeluarkan dan mendepositkan amaun, kami akan cuba mengelak panggilan terus kepada contoh pembolehubah "baki". Disebabkan ini, kami mengemas kini ini dengan kaedah penetap kerana kaedah penetap memastikan bahawa jika mana-mana peraturan melanggar pembolehubah contoh, ia akan mengeluarkan pengecualian.
Di bawah adalah kod kaedah deposit dan pengeluaran yang akan kami tambahkan dalam kelas BankAccountHolder.

 public void deposit(double amount) throws Exception {
        if (amount > 0) 
            int finalBalance = this.getBalance() + amount;
            setBalance(finalBalance);
        } else {
            throw new Exception("Deposit amount must be positive.");
        }
    }

    // Public method to withdraw an amount from the account
    public void withdraw(double amount) throws Exception {
        if (amount > 0 && amount <= this.getBalance()) {
            int finalBalance = this.getBalance() - amount;
            setBalance(finalBalance);
        } else {
            throw new Exception("Invalid withdrawal amount.");
        }
    } 
Salin selepas log masuk

Ringkasan: Kami akan cuba mengelak daripada memanggil pembolehubah instance terus dalam kelas juga untuk memenuhi piawaian keselamatan dalam kod kami.

Atas ialah kandungan terperinci Pengaturcaraan Berorientasikan Objek || Enkapsulasi. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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

Tag artikel panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Bagaimanakah mekanisme kelas muatan Java berfungsi, termasuk kelas yang berbeza dan model delegasi mereka? Bagaimanakah mekanisme kelas muatan Java berfungsi, termasuk kelas yang berbeza dan model delegasi mereka? Mar 17, 2025 pm 05:35 PM

Bagaimanakah mekanisme kelas muatan Java berfungsi, termasuk kelas yang berbeza dan model delegasi mereka?

Rangka Kerja 4 JavaScript teratas pada tahun 2025: React, Angular, Vue, Svelte Rangka Kerja 4 JavaScript teratas pada tahun 2025: React, Angular, Vue, Svelte Mar 07, 2025 pm 06:09 PM

Rangka Kerja 4 JavaScript teratas pada tahun 2025: React, Angular, Vue, Svelte

Bagaimanakah saya menggunakan Maven atau Gradle untuk Pengurusan Projek Java Lanjutan, Membina Automasi, dan Resolusi Ketergantungan? Bagaimanakah saya menggunakan Maven atau Gradle untuk Pengurusan Projek Java Lanjutan, Membina Automasi, dan Resolusi Ketergantungan? Mar 17, 2025 pm 05:46 PM

Bagaimanakah saya menggunakan Maven atau Gradle untuk Pengurusan Projek Java Lanjutan, Membina Automasi, dan Resolusi Ketergantungan?

Bagaimanakah saya dapat melaksanakan teknik pengaturcaraan berfungsi di Java? Bagaimanakah saya dapat melaksanakan teknik pengaturcaraan berfungsi di Java? Mar 11, 2025 pm 05:51 PM

Bagaimanakah saya dapat melaksanakan teknik pengaturcaraan berfungsi di Java?

Node.js 20: Peningkatan Prestasi Utama dan Ciri -ciri Baru Node.js 20: Peningkatan Prestasi Utama dan Ciri -ciri Baru Mar 07, 2025 pm 06:12 PM

Node.js 20: Peningkatan Prestasi Utama dan Ciri -ciri Baru

Iceberg: Masa Depan Jadual Data Tasik Iceberg: Masa Depan Jadual Data Tasik Mar 07, 2025 pm 06:31 PM

Iceberg: Masa Depan Jadual Data Tasik

Bagaimanakah saya boleh menggunakan JPA (Java Constence API) untuk pemetaan objek-objek dengan ciri-ciri canggih seperti caching dan malas malas? Bagaimanakah saya boleh menggunakan JPA (Java Constence API) untuk pemetaan objek-objek dengan ciri-ciri canggih seperti caching dan malas malas? Mar 17, 2025 pm 05:43 PM

Bagaimanakah saya boleh menggunakan JPA (Java Constence API) untuk pemetaan objek-objek dengan ciri-ciri canggih seperti caching dan malas malas?

Bagaimanakah saya melaksanakan caching pelbagai peringkat dalam aplikasi java menggunakan perpustakaan seperti kafein atau cache jambu? Bagaimanakah saya melaksanakan caching pelbagai peringkat dalam aplikasi java menggunakan perpustakaan seperti kafein atau cache jambu? Mar 17, 2025 pm 05:44 PM

Bagaimanakah saya melaksanakan caching pelbagai peringkat dalam aplikasi java menggunakan perpustakaan seperti kafein atau cache jambu?

See all articles