stifler's Blog



KELAS INNER

Untuk melihat kelas dalam digunakan, mari kita pertama mempertimbangkan array. Pada contoh berikut, kita akan menciptakan array, mengisinya dengan nilai-nilai integer dan kemudian output bahkan hanya nilai indeks array dalam urutan menaik.

Kelas DataStructure di bawah ini terdiri dari:

* Kelas DataStructure luar, yang meliputi metode untuk menambahkan sebuah integer ke array dan mencetak nilai-nilai bahkan indeks array.
* Kelas InnerEvenIterator batin, yang mirip dengan iterator Java standar. Iterators digunakan untuk langkah melalui struktur data dan biasanya memiliki metode untuk menguji elemen terakhir, mengambil elemen saat ini, dan pindah ke elemen berikutnya.
* Metode utama yang instantiates objek DataStructure (ds) dan menggunakannya untuk mengisi array arrayOfInts dengan nilai integer (0, 1, 2, 3, dll), kemudian memanggil metode printEven untuk mencetak nilai-nilai indeks bahkan arrayOfInts .

public class DataStructure {
/ / Buat array
private final static int SIZE 15 =;
int pribadi [] arrayOfInts = new int [UKURAN];

publik DataStructure () {
/ / Mengisi array dengan nilai integer ascending
for (int i = 0; i <SIZE; i + +) {
arrayOfInts [i] = i;
}
}

public void printEven () {
/ / Mencetak nilai-nilai bahkan indeks dari array
InnerEvenIterator iterator = this.new InnerEvenIterator ();
sedangkan (iterator.hasNext ()) {
System.out.println (iterator.getNext () + "");
}
}

/ / Kelas dalam menerapkan pola Iterator
swasta kelas InnerEvenIterator {
/ / Mulai melangkah melalui array dari awal
int swasta berikutnya = 0;

public boolean hasNext () {
/ / Memeriksa apakah elemen saat ini adalah yang terakhir dalam array
return (<next = SIZE – 1);
}

public int getNext () {
/ / Merekam nilai indeks bahkan dari array
retValue int = arrayOfInts [berikutnya];
/ / Mendapatkan elemen bahkan berikutnya
berikutnya + = 2;
kembali retValue;
}
}

public static void main (String s []) {
/ / Mengisi array dengan nilai integer dan mencetak nilai-nilai hanya dari indeks bahkan
ds DataStructure DataStructure = new ();
ds.printEven ();
}
}

Outputnya adalah:

0 2 4 6 8 10 12 14

Perhatikan bahwa kelas InnerEvenIterator merujuk langsung ke variabel instan arrayOfInts dari objek DataStructure.

kelas Inner dapat digunakan untuk menerapkan kelas pekerja seperti yang ditunjukkan dalam contoh di atas. Jika anda berencana untuk menangani peristiwa user-interface, Anda akan perlu mengetahui bagaimana menggunakan inner class karena mekanisme penanganan acara ekstensif menggunakan mereka.

Lokal dan Anonymous Inner Kelas
Ada dua jenis tambahan inner class. Kamu dapat mendeklarasikan sebuah kelas batin dalam tubuh metode. Kelas seperti ini dikenal sebagai kelas dalam lokal. Kamu juga dapat mendeklarasikan kelas batin dalam tubuh metode tanpa penamaan itu. Kelas-kelas ini dikenal sebagai anonymous inner class. Kamu akan menemukan kelas-kelas tersebut dalam pemrograman Java maju.

Pengubah
Kamu dapat menggunakan pengubah yang sama untuk kelas batin yang gunakan untuk anggota lain dari luar kelas. Sebagai contoh, Kamu dapat menggunakan specifiers mengakses – swasta, publik, dan dilindungi – untuk membatasi akses ke kelas batin, sama seperti yang lakukan kepada anggota kelas yang lain

Enam Jenis
Tipe enam adalah jenis bidang yang terdiri dari satu set tetap konstanta. Contoh umum termasuk kompas arah (nilai UTARA, SELATAN, TIMUR, dan BARAT) dan hari-hari dalam seminggu.

Karena mereka adalah konstanta, nama-nama field tipe enam adalah dalam huruf besar.

Dalam bahasa pemrograman Java, Kamu menentukan tipe enam dengan menggunakan kata kunci enam. Misalnya, Kamu akan menentukan hari-of-the-minggu tipe enam sebagai:

public enam {Hari
Minggu, Senin, Selasa, Rabu,
Kamis, Jumat, Sabtu
}

Kamu harus menggunakan jenis enam setiap saat Kamu perlu untuk mewakili seperangkat tetap konstanta. Itu termasuk jenis enum alam seperti planet-planet di tata surya kita dan data set mana kamu tahu semua nilai yang mungkin pada waktu kompilasi-misalnya, pilihan pada menu, flag perintah baris, dan sebagainya.

Berikut adalah beberapa kode yang menunjukkan kepada Anda bagaimana menggunakan enam Hari didefinisikan di atas:

public class EnamTest {
Hari hari;

publik EnamTest (Hari hari) {
this.day = hari;
}

public void tellItLikeItIs () {
switch (hari) {
Senin kasus: System.out.println ("Senin buruk.");
break;

Jumat kasus: System.out.println ("Jumat lebih baik.");
break;

kasus Sabtu:
Kasus Minggu: System.out.println ("Akhir pekan adalah yang terbaik.");
break;

default: System.out.println ("pertengahan minggu hari begitu-begitu.");
break;
}
}

public static void main (String [] args) {
EnumTest firstDay = baru EnumTest (Day.MONDAY);
firstDay.tellItLikeItIs ();
EnumTest thirdDay = baru EnumTest (Day.WEDNESDAY);
thirdDay.tellItLikeItIs ();
EnumTest fifthDay = baru EnumTest (Day.FRIDAY);
fifthDay.tellItLikeItIs ();
EnumTest sixthDay = baru EnumTest (Day.SATURDAY);
sixthDay.tellItLikeItIs ();
EnumTest seventhDay = baru EnumTest (Day.SUNDAY);
seventhDay.tellItLikeItIs ();

}
}

Outputnya adalah:

Senin buruk.
hari pertengahan minggu begitu-begitu.
Jumat lebih baik.
Akhir pekan adalah yang terbaik.
Akhir pekan adalah yang terbaik.

jenis bahasa pemrograman Java enum jauh lebih kuat daripada rekan-rekan mereka dalam bahasa lain. Deklarasi enam mendefinisikan kelas (disebut tipe enum). Tubuh kelas enam dapat mencakup metode dan bidang lainnya. compiler akan secara otomatis menambahkan beberapa metode khusus ketika menciptakan sebuah enam. Misalnya, mereka memiliki metode statis yang mengembalikan nilai array yang berisi semua nilai dari enam dalam urutan mereka dinyatakan. Metode ini umumnya digunakan dalam kombinasi dengan masing-masing untuk membangun untuk beralih di atas nilai dari sebuah tipe enam. Sebagai contoh, kode dari contoh kelas Planet bawah iterates atas semua planet di tata surya.

untuk (Planet p: Planet.values ()) {
System.out.printf ("Berat badan Anda pada% s adalah% f% n",
p, p.surfaceWeight (massa));
}

Catatan: Semua enums implisit memperpanjang java.lang.Enum. Karena Java tidak mendukung multiple inheritance, enum tidak dapat memperpanjang hal lain.
Pada contoh berikut, Planet merupakan tipe enum yang mewakili planet-planet di tata surya. Mereka didefinisikan dengan massa konstan dan properti radius.

Setiap enam konstan dinyatakan dengan nilai untuk parameter massa dan jari-jari. Nilai-nilai yang dilewatkan ke konstruktor ketika konstan diciptakan. Java mensyaratkan bahwa konstanta didefinisikan pertama, sebelum segala bidang atau metode. Juga, ketika ada ladang dan metode, daftar konstanta enam harus diakhiri dengan titik koma.
Catatan: konstruktor untuk tipe enam harus akses paket-swasta atau swasta. Secara otomatis menciptakan konstanta yang didefinisikan pada awal tubuh enam. Kamu tidak dapat memanggil sebuah konstruktor enum sendiri.
Selain sifat dan konstruktor, Planet memiliki metode yang memungkinkan Kamu untuk mengambil gravitasi permukaan dan berat suatu benda di planet masing-masing. Berikut adalah contoh program yang mengambil berat badan di bumi (dalam unit ada) dan menghitung dan mencetak berat badan Kamu pada semua planet (dalam satuan yang sama):

public enum {Planet
MERCURY (3.303e 23, 2.4397e6),
VENUS (4.869e +24, 6.0518e6),
BUMI (5.976e +24, 6.37814e6),
MARS (6.421e 23, 3.3972e6),
JUPITER (1.9e +27, 7.1492e7),
SATURN (5.688e +26, 6.0268e7),
Uranus (8.686e +25, 2.5559e7),
Neptune (1.024e +26, 2.4746e7);

swasta massa ganda akhir; / / dalam kilogram
pribadi ganda radius akhir; / / dalam meter
Planet (massa ganda, double radius) {
this.mass = massa;
this.radius = radius;
}
pribadi ganda massa () {massa return;}
private double radius () {return radius;}

/ / Universal gravitasi konstan (m3 kg-1 s-2)
public static double G akhir = 6.67300E-11;

ganda surfaceGravity () {
kembali massa * G / (radius * radius);
}
surfaceWeight ganda (double otherMass) {
kembali otherMass * surfaceGravity ();
}
public static void main (String [] args) {
if (args.length! = 1) {
System.err.println ("Penggunaan: java Planet “);
System.out.println (-1);
}
earthWeight ganda = Double.parseDouble (args [0]);
massa earthWeight = ganda / EARTH.surfaceGravity ();
untuk (Planet p: Planet.values ())
System.out.printf (“Berat badan Anda pada% s adalah% f% n”,
p, p.surfaceWeight (massa));
}
}

Jika Kamu menjalankan Planet.class dari baris perintah dengan argumen dari 175, Kamu mendapatkan output ini:

$ Java Planet 175
Berat badan Anda pada MERCURY adalah 66.107583
Berat badan Anda pada VENUS adalah 158.374842
Berat badan Anda di BUMI adalah 175.000000
Berat badan Anda di MARS adalah 66.279007
Berat badan Anda pada JUPITER adalah 442.847567
Berat badan Anda pada SATURN adalah 186.552719
Berat badan Anda di Uranus 158.397260
Berat badan Anda di Neptunus adalah 199.207413


Tinggalkan komentar