CodeGym /Blog Jawa /Acak /Antarmuka ing Jawa
John Squirrels
tingkat
San Francisco

Antarmuka ing Jawa

Diterbitake ing grup
Kaya sing sampeyan ngerteni, kabeh ing Jawa kalebu obyek, lan obyek duwe negara (kolom) lan prilaku (ditetepake kanthi metode). Prilaku kelas sing bisa ngiket karo kelas liyane. Prilaku bisa duwe ciri sing beda-beda, lan kadhangkala bisa luwih trep kanggo mindhah menyang njaba kelas, utamane nalika sesambungan karo donya njaba. Kaya remot kontrol TV ing njaba "kothak" dhewe. Remot kontrol minangka antarmuka kanggo interaksi pangguna karo fungsi TV. Contone, sampeyan bisa mbayangno kelas sing ngetrapake pesawat abstrak utawa helikopter. Obyek saka loro kelas kayata paling manuk bisa mabur, lan kabeh padha nindakake iku beda. Mbok menawa kudu mindhah fitur iki menyang entitas sing kapisah, lan kabeh "flyers" potensial bakal diwarisake saka entitas iki? Yen sampeyan wis kenal karo kelas abstrak, sampeyan mung bisa nggawe kelas abstrak Flyable lan "marisi" kelas Copter lan Plane saka iku. Nanging, kepiye yen ana sawetara properti kasebut? Contone, pesawat lan helikopter bisa mabur, nanging uga lelungan ing lemah. Sanajan kita nggawe kelas Ride, kita ora bisa nemtokake Copter lan Plane maneh. Sawise kabeh, saben kelas Jawa mung ana siji kelas induk. Antarmuka ing Jawa - 1Nggunakake antarmuka ing basa Jawa sebagian ngatasi masalah iki. Antarmuka ing Jawa nemtokake sawetara fungsi sing ora duwe implementasine tartamtu, sing banjur dileksanakake dening kelas sing nggunakake antarmuka kasebut. Lan siji kelas bisa ngleksanakake akeh antarmuka. Nyatane, kanthi ngleksanakake antarmuka ing Jawa, kita nyatakake yen kelas kita bisa nindakake apa wae, kita laporan prilaku. Kita wis nindakake implementasi konkrit saka prilaku ing kelas. Dadi. pesawat lan helikopter njupuk mati beda: pesawat perlu landasan pacu, nalika helikopter biasane njupuk mati vertikal. Rincian kasebut paling apik ditindakake ing kelas.

Antarmuka ing Jawa

Kanggo nemtokake antarmuka ing basa Jawa, tembung kunci antarmuka digunakake. Tuladhane:
interface Voice {

    void talk();
}
Antarmuka ing ndhuwur diarani Voice . Antarmuka ing Jawa bisa nemtokake konstanta lan cara, sing bisa uga ora ana implementasine. Biasane, metode antarmuka ora duwe implementasine, kaya ing conto iki. Metode ing antarmuka tanpa implementasine kaya metode abstrak kelas abstrak. Cara antarmuka biasane ora duwe modifikasi akses. Nanging akses bener umum minangka standar amarga tujuan antarmuka kanggo nemtokake fungsi kanggo implementasi kelas. Mulane, kabeh fungsi kudu mbukak kanggo implementasine. Kanggo ngleksanakake antarmuka, gunakake tembung kunci Implements nalika ngumumake kelas sampeyan. Kajaba iku, yen antarmuka ngemot metode tanpa implementasine, mula metode kasebut kudu ditindakake ing kelas pelaksana.
public class Duck implements Voice {


@Override
public void voice() {
   System.out.println("Quack");
}


    }

Tuladha kode antarmuka

Ayo njupuk conto sing luwih lengkap. Saben (uga, meh saben) kewan nduweni kemampuan kanggo nggawe swara. Ayo nggawe antarmuka Java Voice kanggo kasus iki. Wis cara Dhiskusi () tanpa implementasine.
public interface Voice {
   void talk();
}
Saiki kabeh kelas sing ndhukung antarmuka Voice kudu implementasine saka cara Dhiskusi () . Ayo nggawe rong kelas - Kucing lan Asu lan nuduhake yen dheweke ngetrapake antarmuka Voice . Ing kasus iki, yen sampeyan ora ngleksanakake kelas ing, program ora bakal bisa. Cara implementasine gampang banget. Nalika nelpon cara Dhiskusi () obyek saka kelas Cat , teks padha karo meow bakal ditampilake ing layar, ing cilik saka kelas Dog , babakan. Kita uga bakal nambah getter, setter lan konstruktor kanggo kelas.
public class Cat implements Voice {
   String name;
   String breed;
   int year;

   public Cat(String name, String breed, int year) {
       this.name = name;
       this.breed = breed;
       this.year = year;
   }

   public String getName() {
       return name;
   }

   public void setName(String name) {
       this.name = name;
   }

   public String getBreed() {
       return breed;
   }

   public void setBreed(String breed) {
       this.breed = breed;
   }

   public int getYear() {
       return year;
   }

   public void setYear(int year) {
       this.year = year;
   }

   @Override
   public void talk() {
       System.out.println("meow...");
   }
}
public class Dog implements Voice {
   String name;
   String color;
   int year;

   public Dog(String name, String color, int year) {
       this.name = name;
       this.color = color;
       this.year = year;
   }

   public String getName() {
       return name;
   }

   public void setName(String name) {
       this.name = name;
   }

   public String getColor() {
       return color;
   }

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

   public int getYear() {
       return year;
   }

   public void setYear(int year) {
       this.year = year;
   }

   @Override
   public void talk() {
       System.out.println("WOF WOF");
   }
}
Nyatane, implementasine kelas lan metode kita meh padha. Ayo nggawe kelas liyane, Parrot , kanthi dhukungan Voice . Mung cara Dhiskusi () bakal bisa beda ing: pangguna bakal ngetik senar menyang console, lan manuk beo bakal "mbaleni" nggunakake cara Dhiskusi () .
import java.util.Scanner;

public class Parrot implements Voice {
   String name;
   String color;
   int year;

   public String getName() {
       return name;
   }

   public void setName(String name) {
       this.name = name;
   }

   public String getColor() {
       return color;
   }

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

   public int getYear() {
       return year;
   }

   public void setYear(int year) {
       this.year = year;
   }

   @Override
   public void talk() {
       Scanner scanner = new Scanner(System.in);
       System.out.println("WHat should I repeat after you?...");
       String s =  scanner.nextLine();
       System.out.println(s);
   }
}
Saiki ayo nggawe kelas test lan ndeleng apa asil program bakal gawé yen kita nelpon cara Dhiskusi () obyek saka Cat , Dog lan Parrot kelas ing siji.
public class InterfaceDemo {
   public static void main(String[] args) {
       Cat cat = new Cat ("Mewie", "Siam" ,2021);
       cat.talk();
       Dog dog = new Dog("Snoopy", "White and black", 2020);
       dog.talk();
       Parrot parrot = new Parrot();
       parrot.talk();
   }
}
Output ing ngisor iki. Teks ijo minangka pangguna sing dicithak ing konsol.
meow... WOF WOF APA sing kudu tak ulangi sawise sampeyan?... Aku manuk sing pinter ngomong lan pinter Aku manuk sing pinter ngomong lan pinter.

Metode Default

Sadurunge release JDK 8 nalika ngleksanakake antarmuka ing Jawa, kita kudu ngleksanakake kabeh cara ing kelas. Ing wektu sing padha, antarmuka Jawa dhewe mung bisa ngemot definisi metode tanpa implementasine tartamtu. JDK 8 nambah fungsi anyar - cara standar. Saiki antarmuka Jawa ora mung duwe definisi metode nanging uga implementasine standar. Iki digunakake yen kelas ngetrapake antarmuka nanging ora ngetrapake metode kasebut. Contone, ayo ngganti cara Dhiskusi () ing antarmuka Voice kanggo cara standar. Kita uga bakal nulis kelas bebek Voice -enabled anyar sing ora duwe implementasine saka cara Dhiskusi .
public interface Voice {
   default void talk() {
       System.out.println("I can talk...");
   }
}
public class Duck implements Voice {

   public void moveForward() {
       System.out.println(" Quack, I am moving forward...");
   }

   public void TurnRight(){
       System.out.println("I am turning right...");
   }
   public void TurnLeft(){
       System.out.println("I am turning left...");

   }

   public void Stop() {
       System.out.println("Quack. I am relaxing on the surface of the water...");
   }

   public void fly(){
       System.out.println("I am flying!!!");
   }

}
Saiki ayo ngganti kelas tes kita.
public class InterfaceDemo {
   public static void main(String[] args) {
       Cat cat = new Cat ("Mewie", "Siam" ,2021);
       cat.talk();
       Dog dog = new Dog("Snoopy", "White and black", 2020);
       dog.talk();
       Duck duck = new Duck();
       duck.talk();
   }
}
Output ing kene:
meow... WOF WOF aku bisa ngomong ...
weruh? Ing obyek saka kelas Dog lan Kucing , disebut Dhiskusi cara overridden () , nanging ing obyek saka kelas Duck , cara standar saka antarmuka disebut. Mangkono, cara standar mung cara tanpa modifiers lan ditandhani karo tembung kunci standar. Kita ora kudu ngleksanakake cara standar ing kelas sing ngleksanakake antarmuka, nanging kita bisa ngalahake.

Metode Statis

Wiwit metode statis JDK 8 kasedhiya ing antarmuka Jawa - padha karo metode kelas:
interface Voice {

    void talk();

    static void check(){

        System.out.println("checked...");
    }
}
Kanggo ngrujuk menyang cara statis antarmuka, kaya ing kasus kelas, tulis jeneng antarmuka lan cara:
public static void main(String[] args) {

    Voice.check();
}

Multiple Implementasine Antarmuka

Yen kita kudu ngetrapake sawetara antarmuka ing kelas Jawa, mula kabeh kasebut didaftar nganggo koma sawise tembung diimplementasikake :
public class Duck implements Swimmable, Flyable, Voice {

    public void moveForward() {
        System.out.println(" Quack, I am moving forward...");
    }

    public void TurnRight(){
        System.out.println("I am turning right...");
    }
    public void TurnLeft(){
        System.out.println("I am turning left...");

    }

    public void Stop() {
        System.out.println("Quack. I am relaxing on the surface of the water...");
    }

    public void fly(){
        System.out.println("I am flying!!!");
    }

}
Komentar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION