KodeGym/Blog Jawa/Acak/Kelas nested statis
John Squirrels
tingkat
San Francisco

Kelas nested statis

Diterbitake ing grup
Hi! Kita terus njelajah topik kelas nested ing basa Jawa. Ing latihan pungkasan, kita ngomong babagan kelas nested non-statis, sing uga dikenal minangka kelas batin Kelas nested statis - 1Dina iki kita pindhah menyang klompok kelas liyane. Kita bakal nimbang kelas nested statis. Kelas nested statis - 3Kepiye bedane karo kelas liyane? Nalika ngumumake kelas iki, kita nggunakake tembung kunci statis, sing wis sampeyan kenal:
public class Boeing737 {

   private int manufactureYear;
   private static int maxPassengersCount = 300;

   public Boeing737(int manufactureYear) {
       this.manufactureYear = manufactureYear;
   }

   public int getManufactureYear() {
       return manufactureYear;
   }

   public static class Drawing {

       public static int getMaxPassengersCount() {

           return maxPassengersCount;
       }
   }
}
Kelas nested statis - 4Ing conto iki, kita duwe Boeing737kelas njaba, sing makili pesawat saka jinis iki. Wis konstruktor karo siji parameter: taun Pabrik ( int manufactureYear). Ana uga siji variabel statis: jumlah maksimum penumpang ( int maxPassengersCount). Bakal duwe nilai sing padha kanggo kabeh pesawat saka model sing padha, mula kita mung butuh siji conto. Kajaba iku, nduweni kelas nested statis: Drawing(makili cithak biru teknik pesawat). Kita nggunakake kelas iki kanggo encapsulate kabeh informasi resmi babagan pesawat. Ing conto kita, kanggo gamblang, kita wis matesi kelas iki kanggo taun Pabrik, nanging bisa ngemot akèh informasi liyane. Kelas nested statis - 5Nalika kita ngandika ing wulangan pungkasan, nggawe kelas nested kuwi nambah enkapsulasi lan nyumbang kanggo abstraksi luwih nyata. Apa bedane kelas nested statis lan non-statis? 1. Objek saka Drawingkelas statis ora nyimpen referensi kanggo conto tartamtu saka kelas njaba. Elinga conto sepeda saka pelajaran pungkasan:
public class Bicycle {

   private String model;
   private int maxWeight;

   public Bicycle(String model, int maxWeight) {
       this.model = model;
       this.maxWeight = maxWeight;
   }

   public void start() {
       System.out.println("Let's go!");
   }

   public class Handlebar {

       public void right() {
           System.out.println("Steer right!");
       }

       public void left() {

           System.out.println("Steer left!");
       }
   }

}
Ing pawulangan kasebut, kita ngomong babagan kasunyatan manawa saben instance saka Handlebarkelas njero, sing ora katon kanggo kita, ngliwati referensi kanggo conto kelas Bicyclenjaba. Tanpa conto saka kelas njaba, obyek saka kelas njero mung ora bisa ana. Kanggo kelas nested statis, iki ora kedadeyan. Obyek saka kelas nested statis tanggung bisa ana ing dhewe. Ing babagan iki, kelas statis luwih "mandiri" tinimbang non-statis. Siji-sijine sing sampeyan kudu ngerti yaiku nalika nggawe obyek kasebut, sampeyan kudu nemtokake jeneng kelas njaba:
public class Main {

   public static void main(String[] args) {

       Boeing737.Drawing drawing1 = new Boeing737.Drawing();
       Boeing737.Drawing drawing2 = new Boeing737.Drawing();
   }
}
Apa kita nggawe Drawingkelas statis nalika ing pawulangan pungkasan kita digawe ingSeatkelas (makili kursi mancal) non-statis? Kaya sing wingi, ayo ditambahi "filosofi" sethithik supaya bisa ngerti contone :) Beda karo kursi sepeda, konsep gambar teknik ora kaku karo konsep pesawat. Tanpa sepedha, obyek jog sepeda sing kapisah paling asring ora ana gunane (sanajan ora mesthi, kita ngomong babagan iki ing wulangan pungkasan). Konsep gambar teknik nggawe akal dhewe. Contone, bisa migunani kanggo insinyur sing ngrancang pangopènan pesawat. Pesawat ora perlu kanggo nggawe rencana lan bisa ditemokake ing ngendi wae. Mung gambar teknik sing dibutuhake. Kajaba iku, kabeh pesawat saka model padha bakal duwe gambar engineer padha, supaya ora ana hubungan kenceng kaya ana karo jog mancal. Mulane, aDrawingobyek ora perlu referensi kanggo obyek pesawat tartamtu. 2. Akses sing beda menyang variabel lan metode kelas njaba. Kelas nested statis mung bisa ngakses kolom statis saka kelas njaba. Ing conto kita, Drawingkelas nduweni getMaxPassengersCount()cara sing ngasilake nilai variabel statis maxPassengersCountsaka kelas njaba. Nanging, kita ora bisa nggawe getManufactureYear()cara ing Drawingkelas kanggo ngasilake nilai manufactureYear. Sawise kabeh, manufactureYearvariabel kasebut non-statis, tegese kudu kalebu conto tartamtu saka Boeing737. Lan kaya sing wis ditemokake, ing kasus kelas bersarang statis, obyek saka kelas njaba bisa uga ora ana. Empu, watesan :) Ora Matter kang akses modifier variabel statis wis ing kelas njaba. Malah yen ikuprivate, kelas nested statis isih bakal duwe akses. Kabeh ing ndhuwur ditrapake ora mung kanggo akses menyang variabel statis, nanging uga kanggo cara statis. PENTING! Ing deklarasi kelas batin, statictembung kunci ora ateges sampeyan mung bisa nggawe siji obyek. Aja bingung obyek karo variabel. Yen kita ngomong babagan variabel statis, banjur, ya, ana siji conto variabel kelas statis, contone maxPassangersCount,. Nanging nalika staticditrapake ing kelas nested, tegese mung obyek kasebut ora ngemot referensi kanggo obyek kelas njaba. Lan kita bisa nggawe akeh obyek sing dikarepake:
public class Boeing737 {

   private int manufactureYear;
   private static int maxPassengersCount = 300;

   public Boeing737(int manufactureYear) {
       this.manufactureYear = manufactureYear;
   }

   public int getManufactureYear() {
       return manufactureYear;
   }

   public static class Drawing {

       private int id;

       public Drawing(int id) {
           this.id = id;
       }

       public static int getPassengersCount() {

           return maxPassengersCount;
       }

       @Override
       public String toString() {
           return "Drawing{" +
                   "id=" + id +
                   '}';
       }

       public static void main(String[] args) {

           for (int i = 1; i < 6; i++) {

               Boeing737.Drawing drawing = new Boeing737.Drawing(i);
               System.out.println(drawing);
           }
       }
   }
}
We ngumumake main()cara langsung ing kelas nested (ora ana alesan khusus kanggo iki - mung supaya sampeyan ngerti sing iki bisa), lan digawe 5 Drawingobyek. Senadyan kasunyatan sing kita ora duwe obyek siji saka kelas njaba. Kaya sing sampeyan ngerteni, iki ora nggawe masalah :) Output konsol:
Drawing{id=1}
Drawing{id=2}
Drawing{id=3}
Drawing{id=4}
Drawing{id=5}
Lan iki rampung pelajaran kita! Yen ngono, aku bakal menehi sampeyan link menyang bagean babagan kasebut ing dokumentasi Oracle . Yen ana sing isih ora jelas, waca. Saiki wektune aku ngrampungake sawetara tugas! :)
Komentar
  • Popular
  • Anyar
  • lawas
Sampeyan kudu mlebu kanggo ninggalake komentar
Kaca iki durung duwe komentar