Latest web development tutorials

pengubah java

bahasa Jawa menyediakan banyak pengubah, dibagi menjadi kategori berikut:

  • akses modifier
  • Non-akses modifier

Modifier digunakan untuk mendefinisikan kelas, metode atau variabel, biasanya di garis depan pernyataan. Melalui contoh berikut untuk menggambarkan:

public class className {
   // ...
}
private boolean myFlag;
static final double weeks = 9.5;
protected static final int BOXWIDTH = 42;
public static void main(String[] arguments) {
   // 方法体
}

kontrol akses pengubah

Java, Anda dapat menggunakan karakter kontrol akses untuk melindungi akses ke kelas, variabel, metode, dan konstruktor. Java mendukung empat hak akses yang berbeda.

Secara default, juga dikenal sebagai default, terlihat di dalam paket yang sama, tidak menggunakan pengubah apapun.

Swasta, untuk pengubah swasta yang ditentukan, terlihat dalam kelas yang sama.

Ada, untuk menentukan pengubah publik, terlihat semua kelas.

Dilindungi, pengubah untuk dilindungi menetapkan bahwa, untuk semua kelas dan subclass dalam paket yang sama terlihat.

Pengubah akses standar - tidak menggunakan kata kunci apapun

Menggunakan variabel dan metode dinyatakan wanprestasi akses pengubah untuk kelas dalam paket yang sama terlihat. Antarmuka di mana variabel secara implisit dinyatakan sebagai akhir public static, dan antarmuka di mana metode akses default untuk publik.

contoh:

Pernyataan dalam contoh berikut, variabel dan metode tidak dapat menggunakan pengubah apapun.

String version = "1.5.1";
boolean processOrder() {
   return true;
}

Akses pribadi pengubah-swasta

Swasta akses pengubah adalah tingkat paling ketat dari akses, dinyatakan sebagai metode swasta, variabel, dan milik konstruktor kelas hanya bisa diakses, dan kelas dan interface tidak dapat dinyatakan pribadi.

Variabel dinyatakan sebagai jenis akses pribadi hanya dapat diakses di luar kelas melalui metode getter public class.

akses pribadi pengubah digunakan terutama untuk rincian pelaksanaan perlindungan kelas dan data di belakang kelas.

Kelas berikut menggunakan akses modifier private:

public class Logger {
   private String format;
   public String getFormat() {
      return this.format;
   }
   public void setFormat(String format) {
      this.format = format;
   }
}

Misalnya, variabel Format kelas Logger adalah variabel swasta, sehingga kelas-kelas lain tidak bisa langsung mendapatkan dan menetapkan nilai variabel. Agar mampu mengoperasikan variabel kelas yang lain mendefinisikan dua metode umum: getFormat () (pulang nilai format) dan setFormat (String) (pengaturan format)

Akses publik pengubah Warung-

Hal ini dinyatakan sebagai kelas masyarakat, metode, konstruktor, dan interface dapat menjadi semua jenis lain dari akses.

Jika beberapa kunjungan timbal balik dari kelas publik dalam paket yang berbeda, Anda perlu mengimpor paket yang sesuai public class berada. Karena kelas warisan, kelas dari semua metode publik dan variabel dapat diwariskan oleh subclass.

Fungsi-fungsi berikut menggunakan kontrol akses publik:

public static void main(String[] arguments) {
   // ...
}

metode utama program Java () harus diatur ke publik, jika tidak, Java interpreter tidak akan dapat menjalankan kelas.

Dilindungi pengubah akses -protected

Dideklarasikan sebagai protected variabel, metode dan konstruktor dalam paket yang sama dapat menjadi semua jenis lain dari akses, dan dapat diakses di paket subclass yang berbeda.

Dilindungi akses pengubah tidak dapat dimodifikasi kelas dan interface, metode, dan variabel anggota dapat dinyatakan sebagai dilindungi, tetapi variabel anggota dan metode anggota dari interface tidak dapat dinyatakan dilindungi.

Subclass dapat mengakses pengubah dinyatakan metode Dilindungi dan variabel, sehingga kita dapat melindungi class yang tidak berhubungan menggunakan metode ini dan variabel.

Berikut kelas induk menggunakan akses pengubah dilindungi, subclass menimpa openSpeaker () metode kelas induk.

class AudioPlayer {
   protected boolean openSpeaker(Speaker sp) {
      // 实现细节
   }
}

class StreamingAudioPlayer {
   boolean openSpeaker(Speaker sp) {
      // 实现细节
   }
}

Jika metode openSpeaker () dinyatakan sebagai pribadi, maka selain kelas AudioPlayer tidak dapat mengakses metode. Jika openSpeaker () dideklarasikan sebagai publik, maka semua kelas dapat mengakses metode. Jika kita ingin membuat proses terlihat subclass dari kelas, maka metode ini dinyatakan sebagai dilindungi.

kontrol akses dan warisan

Harap dicatat metode berikut mewarisi aturan:

  • kelas induk dinyatakan sebagai metode umum dalam subclass juga harus public.

  • kelas induk dinyatakan sebagai metode dilindungi dalam subclass atau dinyatakan sebagai lindung, baik dinyatakan sebagai publik. Anda tidak dapat dideklarasikan swasta.

  • kelas induk dinyatakan sebagai metode pribadi tidak dapat diwariskan.


Non-akses modifier

Dalam rangka mencapai sejumlah fitur lainnya, Java juga menyediakan sejumlah pengubah non-akses.

pengubah statis digunakan untuk membuat metode kelas dan variabel kelas.

pengubah akhir, digunakan untuk menghias kelas, metode dan variabel, kelas dimodifikasi akhir tidak dapat diwariskan, metode modifikasi dari kelas tidak dapat diwariskan mendefinisi ulang, variabel diubah konstan, tidak dapat diubah.

pengubah abstrak yang digunakan untuk membuat kelas abstrak dan metode abstrak.

Disinkronisasi dan pengubah volatile, terutama untuk benang pemrograman.

pengubah statis

  • variabel statis:

    kata kunci statis digunakan untuk mendeklarasikan variabel statis independen dari objek, tidak peduli berapa banyak objek kelas yang dipakai, hanya satu salinan dari variabel statis. variabel statis juga dikenal sebagai variabel kelas. variabel lokal tidak dapat dinyatakan sebagai variabel statis.

  • metode statis:

    kata kunci statis digunakan untuk menyatakan sebuah objek independen dari metode statis. metode statis tidak dapat menggunakan non-statis kelas variabel. metode statis untuk mendapatkan data dari daftar parameter, dan kemudian menghitung data.

Akses ke variabel kelas dan metode dapat digunakan secara langsung classname.variablename dan classname.methodname akses.

Pada contoh berikut, pengubah statis digunakan untuk membuat metode kelas dan variabel kelas.

public class InstanceCounter {
   private static int numInstances = 0;
   protected static int getCount() {
      return numInstances;
   }

   private static void addInstance() {
      numInstances++;
   }

   InstanceCounter() {
      InstanceCounter.addInstance();
   }

   public static void main(String[] arguments) {
      System.out.println("Starting with " +
      InstanceCounter.getCount() + " instances");
      for (int i = 0; i < 500; ++i){
         new InstanceCounter();
          }
      System.out.println("Created " +
      InstanceCounter.getCount() + " instances");
   }
}

Contoh hasil operasi editing di atas adalah sebagai berikut:

Started with 0 instances
Created 500 instances

kualifikasi terakhir

variabel akhir:

variabel akhir dapat secara eksplisit diinisialisasi dan diinisialisasi hanya sekali. Referensi dinyatakan sebagai objek akhir tidak dapat menunjuk ke objek yang berbeda. Tapi target akhir di mana data dapat diubah. Bahwa objek referensi akhir tidak dapat diubah, tetapi nilai yang dapat diubah.

pengubah akhir biasanya digunakan bersama-sama untuk menciptakan sebuah kelas pengubah statis konstan.

contoh:

public class Test{
  final int value = 10;
  // 下面是声明常量的实例
  public static final int BOXWIDTH = 6;
  static final String TITLE = "Manager";

  public void changeValue(){
     value = 12; //将输出一个错误
  }
}

metode terakhir

metode kelas akhir diwarisi oleh subclass, tetapi tidak dapat memodifikasi subclass.

Tujuan utama dari metode ini adalah untuk mencegah deklarasi akhir dari metode ini dimodifikasi.

Seperti ditunjukkan di bawah, dengan menggunakan metode deklarasi pengubah akhir.

public class Test{
    public final void changeName(){
       // 方法体
    }
}

kategori terakhir

kelas akhir tidak dapat diwariskan, tidak ada kelas dapat mewarisi salah satu karakteristik dari kelas akhir.

contoh:

public final class Test {
   // 类体
}

pengubah abstrak

kelas abstrak:

Kelas abstrak tidak dapat digunakan untuk instantiate sebuah obyek, tujuan tunggal pernyataan itu adalah kelas abstrak untuk ekspansi masa depan kelas ini.

Sebuah kelas tidak dapat diubah abstrak dan akhir. Jika kelas berisi metode abstrak, kelas harus dinyatakan sebagai kelas abstrak, jika tidak, kesalahan kompilator.

Kelas abstrak dapat berisi metode abstrak dan metode non-abstrak.

contoh:

abstract class Caravan{
   private double price;
   private String model;
   private String year;
   public abstract void goFast(); //抽象方法
   public abstract void changeColor();
}

metode abstrak

Tidak ada metode merupakan implementasi metode abstrak, implementasi khusus dari metode yang diberikan oleh subclass. metode abstrak tidak dapat dinyatakan sebagai akhir dan ketat.

Setiap subclass mewarisi kelas abstrak harus menerapkan semua metode abstrak dari kelas induk, kecuali subclass juga kelas abstrak.

Jika kelas berisi sejumlah metode abstrak, kelas harus dinyatakan sebagai kelas abstrak. Kelas abstrak tidak dapat berisi metode abstrak.

Abstrak Metode deklarasi diakhiri dengan titik koma, misalnya: public sampel abstrak ();

contoh:

public abstract class SuperClass{
    abstract void m(); //抽象方法
}
 
class SubClass extends SuperClass{
     //实现抽象方法
      void m(){
          .........
      }
}

disinkronkan pengubah

Metode Synchronized kata kunci untuk menyatakan waktu yang sama hanya satu akses benang. Disinkronisasi pengubah dapat diterapkan untuk empat pengubah akses.

contoh:

public synchronized void showDetails(){
.......
} 

pengubah transien

objek serial berisi dimodifikasi oleh variabel misalnya sementara, mesin virtual java (JVM) untuk melewati bahwa variabel tertentu.

modifikator termasuk dalam definisi pernyataan variabel untuk preprocessing kelas tipe data dan variabel.

contoh:

public transient int limit = 55;   // will not persist
public int b; // will persist

Pengubah Volatile

variabel anggota dimodifikasi Volatile setiap kali diakses benang dipaksa untuk kembali membaca nilai dari variabel anggota dari memori bersama. Juga, ketika perubahan variabel anggota, thread dipaksa untuk mengubah nilai ditulis kembali ke memori bersama. Sehingga setiap saat, dua benang yang berbeda selalu melihat nilai yang sama dari variabel anggota.

Sebuah referensi obyek yang mudah menguap mungkin nol.

contoh:

public class MyRunnable implements Runnable
{
    private volatile boolean active;
    public void run()
    {
        active = true;
        while (active) // 第一行
        {
            // 代码
        }
    }
    public void stop()
    {
        active = false; // 第二行
    }
}

Dalam keadaan normal, thread panggilan () method run (di thread terbuka Runnable) di thread lain panggilan menghentikan metode (). Jika nilai yang aktif di baris pertama dari buffer yang digunakan, di baris kedua ketika siklus aktif adalah palsu tidak berhenti.

Namun, kode di atas, kita menggunakan dimodifikasi mudah menguap aktif, sehingga siklus akan berhenti.