KodeGym/Blog Jawa/Acak/Tuladha spesifik kelas abstrak ing basa Jawa
John Squirrels
tingkat
San Francisco

Tuladha spesifik kelas abstrak ing basa Jawa

Diterbitake ing grup
Hi! Ing wulangan kepungkur, kita ketemu antarmuka lan ngerti apa tujuane. Topik dina iki bakal mbaleni topik sadurunge. Ayo dadi pirembagan bab kelas abstrak ing Jawa. Tuladha spesifik kelas abstrak ing basa Jawa - 1

Kenapa kelas diarani 'abstrak'

Sampeyan bisa uga ngelingi apa 'abstraksi' - kita wis ngerti. :) Yen sampeyan lali, aja wedi. Elingi: iku prinsip OOP sing ngandika nalika ngrancang kelas lan nggawe obyek, kita kudu ngenali mung sifat utama entitas lan discard cilik. Contone, yen kita ngrancang SchoolTeacherkelas, kita meh ora mbutuhake properti ' dhuwur '. Pancen, sifat iki ora relevan kanggo guru. Nanging yen kita nggawe BasketballPlayerkelas, mula wutah bakal dadi ciri penting. Dadi ngrungokake. Kelas abstrakminangka abstrak nalika teka - 'kosong' sing durung rampung kanggo klompok kelas sing bakal teka. Kothong ora bisa digunakake. Iku banget 'mentah'. Nanging nggambarake prilaku negara lan umum tartamtu sing bakal diduweni dening kelas mangsa sing bakal marisi kelas abstrak.

Tuladha kelas basa Jawa abstrak

Coba conto prasaja karo mobil:
public abstract class Car {

   private String model;
   private String color;
   private int maxSpeed;

   public abstract void gas();

   public abstract void brake();

   public String getModel() {
       return model;
   }

   public void setModel(String model) {
       this.model = model;
   }

   public String getColor() {
       return color;
   }

   public void setColor(String color) {
       this.color = color;
   }

   public int getMaxSpeed() {
       return maxSpeed;
   }

   public void setMaxSpeed(int maxSpeed) {
       this.maxSpeed = maxSpeed;
   }
}
Iki minangka kelas abstrak sing paling gampang. Kaya sing sampeyan ngerteni, ora ana sing khusus :) Napa kita butuh? Kaping pisanan, iki nggambarake entitas sing dibutuhake, mobil, kanthi cara sing paling abstrak. Ana alesan kenapa kita nggunakake tembung abstrak . Ing donya nyata, ora ana 'mobil abstrak'. Ana truk, mobil balap, sedan, coupe, lan SUV. Kelas abstrak kita mung minangka 'cetak biru' sing bakal digunakake mengko kanggo nggawe kelas mobil.
public class Sedan extends Car {

   @Override
   public void gas() {
       System.out.println("The sedan is accelerating!");
   }

   @Override
   public void brake() {
       System.out.println("The sedan is slowing down!");
   }

}
Iki meh padha karo sing kita rembugan ing pelajaran babagan warisan. Nanging ing pelajaran kasebut, kita duwe kelas Mobil lan metode kasebut ora abstrak. Nanging solusi kasebut duwe sawetara kekurangan sing tetep ing kelas abstrak. Kaping pisanan, sampeyan ora bisa nggawe conto kelas abstrak :
public class Main {

   public static void main(String[] args) {

       Car car = new Car(); // Error! The Car class is abstract!
   }
}
Pangripta Jawa ngrancang khusus 'fitur' iki. Sepisan maneh, minangka pangeling: kelas abstrak mung minangka cithak biru kanggo kelas 'normal' ing mangsa ngarep . Sampeyan ora butuh salinan cithak biru, ta? Lan sampeyan ora nggawe conto kelas abstrak :) Nanging yen Carkelas kasebut ora abstrak, kita bisa nggawe conto kasebut kanthi gampang:
public class Car {

   private String model;
   private String color;
   private int maxSpeed;

   public void gas() {
       // Some logic
   }

    public void brake() {
       // Some logic
   }
}


public class Main {

   public static void main(String[] args) {

       Car car = new Car(); // Everything is fine. A car is created.
   }
}
Saiki program kita duwe sawetara mobil sing ora bisa dingerteni - dudu truk, dudu mobil balap, dudu sedan, lan ora jelas apa iku. Iki minangka 'mobil abstrak' sing ora ana ing alam. Kita bisa menehi conto sing padha nggunakake kewan. Mbayangno yen Animalkelas ( kewan abstrak ). Ora jelas kewan apa iku, kulawargane apa, lan ciri-cirine apa. Iku bakal aneh kanggo ndeleng sing ing program. Ora ana 'kewan abstrak' ing alam. Mung asu, kucing, rubah, mol, lan sapiturute. Kelas abstrak ngirim kita saka obyek abstrak. Padha menehi kita negara dhasar lan prilaku. Contone, kabeh mobil kudu duwe model , werna , lan kacepetan maksimum , lan sampeyan kudu bisa nggunakakegas lan rem . Mekaten. Iki minangka rencana abstrak umum. Sabanjure sampeyan ngrancang kelas sing sampeyan butuhake. Cathetan: rong cara ing kelas abstrak uga ditetepake minangka abstract , lan ora ana implementasine. Alesane padha: kelas abstrak ora nggawe prilaku standar kanggo mobil abstrak. Dheweke mung nuduhake apa sing kudu ditindakake saben mobil. Nanging, yen sampeyan butuh prilaku standar, sampeyan bisa ngetrapake metode ing kelas abstrak. Jawa ora nglarang iki:
public abstract class Car {

   private String model;
   private String color;
   private int maxSpeed;

   public void gas() {
       System.out.println("Gas!");
   }

   public abstract void brake();

   // Getters and setters
}


public class Sedan extends Car {

   @Override
   public void brake() {
       System.out.println("The sedan is slowing down!");
   }

}

public class Main {

   public static void main(String[] args) {

       Sedan sedan = new Sedan();
       sedan.gas();
   }
}
Output konsol: "Gas!" Nalika sampeyan bisa ndeleng, kita wis dipun ginakaken cara pisanan ing kelas abstrak, lan ora kaloro. Akibaté, Sedanprilaku kelas kita dipérang dadi rong bagéan: yen sampeyan nelpon cara gas(), nelpon 'munggah' nganti Carkelas induk abstrak, nanging kita overrode brake()metode ing Sedankelas. Iki dadi trep banget lan fleksibel. Nanging saiki kelas kita ora dadi abstrak ? Sawise kabeh, setengah saka metode wis dileksanakake. Iki iku bener fitur penting banget - kelas iku abstrak yen paling siji saka sawijining cara iku abstrak. Salah siji saka rong cara, utawa paling ora siji saka sewu cara - ora ana bedane. Kita malah bisa ngetrapake kabeh cara lan ora ana sing abstrak. Banjur bakal dadi kelas abstrak tanpa metode abstrak. Ing asas, iki bisa, lan compiler ora bakal ngasilake kesalahan, nanging luwih apik kanggo ngindhari: Tembung abstrak ilang makna, lan kanca-kanca programer bakal kaget banget : / Ing wektu sing padha, yen cara ditandhani. kanthi tembung abstrak, saben kelas bocah kudu ngetrapake utawa nyatakake minangka abstrak. Yen ora, compiler bakal ngasilake kesalahan. Mesthi wae, saben kelas mung bisa marisi siji kelas abstrak, mula ing babagan warisan ora ana bedane antarane kelas abstrak lan biasa. Ora preduli yen kita marisi kelas abstrak utawa biasa, mung ana siji kelas induk.

Napa Java ora duwe sawetara warisan kelas

Kita wis ngomong yen Jawa ora duwe pirang-pirang warisan, nanging kita durung ngerti apa sebabe. Ayo dadi nyoba kanggo nindakake iku saiki. Kasunyatane, yen Jawa duwe pirang-pirang warisan, kelas bocah ora bakal bisa mutusake prilaku tartamtu sing kudu dipilih. Upaminipun kita duwe rong kelas - Toasterlan NuclearBomb:
public class Toaster {


 public void on() {

       System.out.println("The toaster is on. Toast is being prepared!");
   }

   public void off() {

       System.out.println("The toaster is off!");
   }
}


public class NuclearBomb {

   public void on() {

       System.out.println("Boom!");
   }
}
Nalika sampeyan bisa ndeleng, loro duwe on()cara. Kanggo toaster, iku wiwit toasting. Kanggo bom nuklir, iku nyebabake bledosan. Ups: / Saiki bayangake yen sampeyan mutusake (aja takon apa sebabe!) nggawe apa wae ing antarane. Lan kanthi mangkono sampeyan duwe MysteriousDevicekelas! Kode iki, mesthi, ora bisa digunakake, lan kita mung nyedhiyani minangka conto 'nanging bisa uga':
public class MysteriousDevice extends Toaster, NuclearBomb {

   public static void main(String[] args) {

       MysteriousDevice mysteriousDevice = new MysteriousDevice();
       mysteriousDevice.on(); // So what should happen here? Do we get toast or a nuclear apocalypse?
   }
}
Ayo ndeleng apa sing kita duwe. Piranti misterius kasebut kanthi bebarengan entuk Toaster lan Bom Nuklir. Loro-lorone duwe on()metode. Akibaté, yen kita nelpon on()cara, iku ora cetha kang siji kudu invoked ing MysteriousDeviceobyek. Ora ana cara obyek kasebut bisa ngerti. Lan ndhuwur kabeh: NuclearBomb ora duwe off()cara, dadi yen kita ora guess tengen, iku bakal mokal kanggo mateni piranti. Tuladha spesifik kelas abstrak ing basa Jawa - 2Amarga saka 'kebingungan' iki, obyek kasebut ora ngerti prilaku sing kudu dipamerake, mula pangripta Jawa ninggal warisan pirang-pirang. Nanging, sampeyan bakal kelingan manawa kelas Java bisa ngetrapake macem-macem antarmuka. Miturut cara, ing pasinaon, sampeyan wis ketemu paling siji kelas abstrak!
public abstract class Calendar implements Serializable, Cloneable, Comparable<Calendar>
Iku kanca lawas sampeyan, kelas Calendar. Iku abstrak lan duwe sawetara anak. Salah sijine yaiku GregorianCalendar. Sampeyan wis digunakake ing pawulangan bab tanggal. :) Kabeh katon cukup cetha. Mung ana siji pitakonan: apa bedane dhasar antarane kelas abstrak lan antarmuka? Apa sebabe padha nambahake loro-lorone ing Jawa tinimbang mung mbatesi basa siji? Sawise kabeh, sing mesthi wis cukup. Kita bakal ngrembug babagan iki ing wulangan sabanjure ! Nganti :)
Komentar
  • Popular
  • Anyar
  • lawas
Sampeyan kudu mlebu kanggo ninggalake komentar
Kaca iki durung duwe komentar