KodeGym/Blog Jawa/Acak/Pusaka ing Jawa
John Squirrels
tingkat
San Francisco

Pusaka ing Jawa

Diterbitake ing grup
Basa Jawa minangka basa kang asipat obyek. Iki tegese kabeh ing Jawa kasusun saka kelas lan obyek, lan manut paradigma OOP (object-oriented programming). Salah sijine paradigma kasebut yaiku warisan, mekanisme ing Jawa sing siji kelas diijini oleh warisan fitur (bidang lan metode) kelas liyane. Ing basa Jawa, warisan tegese nggawe kelas anyar adhedhasar kelas sing wis ana. Pusaka ing Jawa - 1

Pelaku Kunci Warisan ing Tanah Jawa

  • Warisan yaiku konsep yen kelas bisa mbaleni sebagian utawa sakabehe sifat lan metode induke (kelas sing diwarisake).
  • Kelas anak, utawa subclass, utawa kelas tambahan, utawa kelas turunan yaiku kelas sing diwenehi warisan saka kelas liyane.
  • Kelas induk, superclass, utawa kelas dasar yaiku kelas sing nduweni sawetara fungsi, lan fungsi kasebut bisa diwarisake (diwariskan) dening kelas liyane (kelas anak).
  • Metode overriding yaiku ngganti prilaku metode kelas turunan. Iki biasane luwih spesifik, prilaku olahan. Yen sampeyan ngilangi cara ing pewaris sing wis ana ing kelas induk, mula ngganti metode induk kasebut.
  • Kelas bisa duwe mung siji kelas leluhur, nanging saben kelas bisa duwe "anak" akeh.

Cara kerjane

Rantai pusaka diarahake saka kelas sing paling abstrak menyang kelas sing luwih konkrit. Tegese, superclass minangka sing paling abstrak ing rantai kelas. Asring diarani abstrak (kelas dasar sing ora mbutuhake implementasine). Kabeh kelas luwih spesifik. Contone, ana kelas sing diarani "Gadget". Bisa duwe lapangan (utawa negara) "bobot" kapasitas baterei lapangan, tingkat daya lapangan lan cara (utawa prilaku) "karya" lan daya. Ing kasus iki, cara bisa abstrak, yaiku, ora duwe implementasine tartamtu. Nalika kita ora bisa ngomong apa jenis gadget iku, iku pancen sembarang gadget rechargeable. Ayo nggawe subkelas Telpon saka kelas Gadget. Ora perlu maneh nemtokake bobot lan baterei, mung entuk warisan saka gadget abstrak. Nanging prilaku karya kudu njlentrehake. Sampeyan uga bisa nambah kolom "diagonal layar", konektor, lan liya-liyane. Sampeyan bisa nambah cara anyar "Nganyari sistem operasi". Sabanjure, kita bisa nggawe rong kelas liyane lan loro-lorone bakal diwarisake saka Telpon, Android lan iPhone. Loro-lorone kelas marisi kabeh lapangan lan cara saka Gadget lan Smartphone, lan cara bisa diganti. Kelas pisanan mbutuhake lapangan "Jeneng merek", nalika iPhone ora mbutuhake lapangan iki, amarga mung siji perusahaan sing ngasilake smartphone kasebut.
class Gadget {}
}
//subclass of Gadget class
class Phone extends Gadget {}
//subclass of Phone class
class IPhone extends Phone {}
//subclass of Phone class
class AndroidPhone extends Phone {}
Kelas anak marisi kabeh anggota umum lan dilindhungi saka kelas induk. Ora Matter apa paket subclass ing. Yen kelas anak ing paket padha kelas tiyang sepah, uga marisi anggota paket-pribadi tuwane. Sampeyan bisa nggunakake anggota sing diwarisake, ngganti, ndhelikake, utawa nambah anggota anyar:
  • Sampeyan bisa nggunakake kolom Warisan langsung kayata kolom liyane.
  • Sampeyan bisa ngumumake lapangan ing kelas anak sing nduweni jeneng sing padha karo kelas induk. Iku ndhelikake (dadi luwih apik ora kanggo nindakake).
  • Sampeyan bisa ngumumake lapangan anyar ing kelas anak (sing ora ana ing kelas induk).
  • Cara warisan bisa digunakake langsung tanpa overriding ing kelas asalé.
  • Sampeyan uga bisa nulis cara Kayata anyar ing subclass sing wis teken padha karo cara ing kelas induk. Prosedur iki overrides iku.
  • Sampeyan bisa ngumumake metode anyar ing kelas anak sing ora diumumake ing kelas Induk.
  • Sampeyan bisa nulis konstruktor subclass sing nyebut konstruktor superclass kanthi implisit utawa nganggo tembung kunci super.

Tuladha

Ayo nggawe kelas MusicalInstrument dhasar kanthi bobot lan lapangan merek dagang, uga cara kerja () . Kita uga nemtokake konstruktor.
public class MusicalInstrument {
   int weight;
   String tradeMark;

   public MusicalInstrument(int weight, String tradeMark) {
       this.weight = weight;
       this.tradeMark = tradeMark;
   }

   public void work() {
       System.out.println("the instrument is playing...");
   }
}
Ora jelas apa jenis alat musik lan carane muter. Ayo nggawe instrumen sing luwih spesifik, biola. Iku bakal duwe kothak padha ing Musical Instrument (bakal disebut ing konstruktor nggunakake super keyword. Kita uga bisa override cara karya lan nggawe cara kanggo nyetel senar biola dening senar.
public class Violin extends MusicalInstrument {
   String master;
   String owner;
   int age;
   boolean isTuned;

   public Violin(int weight, String tradeMark, String master, String owner, int age, boolean isTuned) {
       super(weight, tradeMark);
       this.master = master;
       this.owner = owner;
       this.age = age;
       this.isTuned = isTuned;
   }

   @Override
   public void work() {
       System.out.println("THe violin's playing");

   }

   public void violinTuning () {
     System.out.println("I'm tuning 1st string...");
     System.out.println("I'm tuning 2nd string...");
     System.out.println("I'm tuning 3rd string...");
     System.out.println("I'm tuning 4th string...");
}


}
Ayo nggawe kelas Demo kanggo nyoba kelas Biola lan ndeleng persis cara warisan.
public class InheritDemo {

   public static void main(String[] args) {

       Violin violin = new Violin(1, null, "Amati", "Kremer", 285, false);
       violin.violinTuning();
       violin.work();
   }
}
Ing kasus iki, output program bakal kaya ing ngisor iki:
Aku nyetel senar 1... Aku nyetel senar 2 ... Aku nyetel senar 3 ... Aku nyetel senar 4 ... Biola muter
Tegese, yen ana metode sing ditimpa ing kelas bocah, mula metode leluhur ora bakal diarani maneh. Apa yen ora ana? Yaiku, kelas Biola katon kaya iki:
public class Violin extends MusicalInstrument {
   String master;
   String owner;
   int age;
   boolean isTuned;

   public Violin(int weight, String tradeMark, String master, String owner, int age, boolean isTuned) {
       super(weight, tradeMark);
       this.master = master;
       this.owner = owner;
       this.age = age;
       this.isTuned = isTuned;
   }

  // @Override


 //  }

   public void violinTuning () {
       System.out.println("I'm tuning 1st string...");
       System.out.println("I'm tuning 2nd string...");
       System.out.println("I'm tuning 3rd string...");
       System.out.println("I'm tuning 4th string...");
   }

}
Output yaiku:
Aku nyetel senar 1... nyetel senar 2... nyetel senar ke 3... nyetel senar 4... instrumen lagi diputer...
Tegese, cara leluhur bakal diarani kanthi otomatis. Miturut cara, kelas anak bisa ditetepake liwat leluhur, yaiku, kanggo nindakake upcasting:
Parent parent = new Child()
Inisialisasi iki digunakake kanggo ngakses mung anggota sing ana ing kelas induk lan metode sing diganti. Ing conto kita bakal dadi:
public class InheritDemo {

   public static void main(String[] args) {

       MusicalInstrument violin = new Violin(1, null, "Amati", "Kremer", 285, false);
       //violin.violinTuning();
       violin.work();
   }
}
Ing kasus kaya mengkono, kita ora bisa ngatur cara biola. Nanging ing wektu sing padha, cara kerja () saka kelas turunan bakal diarani, yen ana.

Hierarki Kelas Platform Java

Ing Jawa, kabeh kasusun saka kelas lan padha dadi subordinate menyang hirarki. Pitakonan muncul: apa ana kelas sing diwarisake kabeh liyane? Jawabane ya, pancen ana kelas sing kaya ngono. Lan diarani mung Obyek . Kelas Obyek saka paket java.lang, nemtokake lan ngleksanakake prilaku umum kanggo kabeh kelas, kalebu sing nggawe. Ing platform Jawa, akeh kelas sing diturunake langsung saka Obyek , kelas liyane sing diturunake saka sawetara kelas kasebut, lan liya-liyane, mbentuk hirarki kelas.

Jinis Pusaka ing Jawa

Ayo padha nyorot sawetara jinis pusaka ing Jawa. 1. Warisan Tunggal Jinis iki kaya ing conto ing ndhuwur, subclasses marisi fitur siji super class. Ing gambar ing ngisor iki, kelas A dadi kelas dhasar kanggo kelas asale B. 2. Warisan Multilevel Iki mung minangka rantai warisan, yaiku, ana kelas dasar A, kelas B diwarisake, lan kelas C. diwarisake saka kelas B. Ing Jawa, sawijining kelas ora bisa langsung ngakses anggotane simbah. 3. Warisan Hirarki Wonten ing Warisan Hirarki, satunggal kelas dados superclass (kelas dasar) langkung saking satunggal subclass. Ndhuwur, kita menehi conto kelas Telpon, sing bisa duwe "anak" loro - AndroidPhone lan IPhone.
class A {
    public void printA() {
System.out.println("A");
 }
}

class B extends A {
    public void printB() {
 System.out.println(" B"); }
}

class C extends A {
    public void printC() {
System.out.println("C");
}
}

class D extends A {
    public void printD() {
System.out.println("D");
 }
}

public class Demo {
    public static void main(String[] args)
    {
        B objB = new B();
        objB.printA();
        objB.printB();

        C objC = new C();
        objC.printA();
        objC.printC();

        D objD = new D();
        objD.printA();
        objD.printD();
    }
}
Output yaiku:
A B A C A D
4. Warisan pirang-pirang, yaiku anane leluhur sawetara ... nanging ngenteni, warisan pirang-pirang klasik ora didhukung ing Jawa. Kanggo sawetara ombone, iku bisa dipun ginakaken nggunakake ora kelas, nanging antarmuka.
interface A {
   public void printA();
}

interface B {
   public void printB();
}

interface C extends A, B {
   public void print();
}
class InheritDemo implements C {
   @Override
   public void print()
   {
       System.out.println("Print something");
   }

   @Override
   public void printA() {
   }

   @Override
   public void printB() {
   }
}
Komentar
  • Popular
  • Anyar
  • lawas
Sampeyan kudu mlebu kanggo ninggalake komentar
Kaca iki durung duwe komentar