apa perbedaan extends dan implements pada kelas?

kapan harus digunakan dan contohnya. udah muter-muter nyari, pake bahasa inggris semua takut salah paham wkwk..

terima kasih gan.

avatar ragilsatria
@ragilsatria

4 Kontribusi 1 Poin

Diperbarui 6 tahun yang lalu

3 Jawaban:

extends adalah untuk memperluas class.

implements adalah untuk mengimplementasikan interface.

Perbedaan antara interface dan class reguler adalah: Bahwa dalam interface Anda tidak dapat menerapkan salah satu metode yang dinyatakan. Hanya kelas yang "mengimplementasikan" interface dapat menerapkan metode nya.

C++ mirip dengan interface yg akan menjadi kelas abstrak (tidak PERSIS sama tetapi cukup banyak).

Java juga tidak mendukung multiple inheritance untuk kelas. Ini diselesaikan dengan menggunakan beberapa interface.

Interface example:

  public interface ExampleInterface {
    public void doAction();
    public String doThis(int number);
 }

 public class sub implements ExampleInterface {
     public void doAction() {
       //specify what must happen
     }

     public String doThis(int number) {
       //specfiy what must happen
     }
 }

extends example

  public class SuperClass {
    public int getNb() {
         //specify what must happen
        return 1;
     }

     public int getNb2() {
         //specify what must happen
        return 2;
     }
 }

 public class SubClass extends SuperClass {
      //you can override the implementation
      @Override
      public int getNb2() {
        return 3;
     }
 }

//Lalu pemanggilannya ditempat lain
  Subclass s = new SubClass();
  s.getNb(); //returns 1
  s.getNb2(); //returns 3

  SuperClass sup = new SuperClass();
  sup.getNb(); //returns 1
  sup.getNb2(); //returns 2

Source: https://stackoverflow.com/questions/10839131/implements-vs-extends-when-to-use-whats-the-difference

avatar keccikun
@keccikun

364 Kontribusi 196 Poin

Dipost 6 tahun yang lalu

Interface dapat digunakan ketika class-class yang ada, tidak mepunyai relasi.

contoh: printer tidak mempunyai relasi dengan flashdisk.



interface Usb{
    public void sendData(String data);
}

class Printer implements Usb{
    private String name;

    Printer(String name){
        this.name = name;
    }

    public void cetak(){
        // logic untuk cetak
    }

    @Override
    public void sendData(String data) {
        System.out.println("Printer " + this.name + " Menerima data " + data);
    }
}

class Flashdisk implements Usb{
    private String name;

    Flashdisk(String name){
        this.name=name;
    }

    public void format(){
        // logic untuk format
    }
    @Override
    public void sendData(String data) {
        System.out.println("Flashdisk " + this.name + " Menerima data " + data);
    }
}

class Arduino implements Usb{

    public void setLamp(boolean state){
        // logic untuk menyalakan lampu
    }

    @Override
    public void sendData(String data) {
        System.out.println("Arduino Menerima data " + data);
    }
}

class Komputer{
    public static void main(String[] args) {
        List<Usb> devices = new ArrayList<>();

        devices.add(new Printer("canon"));
        devices.add(new Printer("epson"));
        devices.add(new Flashdisk("sandisk"));
        devices.add(new Flashdisk("kingston"));
        devices.add(new Arduino());

        for (Usb device: devices){
            device.sendData("Hello World!");
        }
    }
}

hasilnya


Printer canon Menerima data Hello World!
Printer epson Menerima data Hello World!
Flashdisk sandisk Menerima data Hello World!
Flashdisk kingston Menerima data Hello World!
Arduino Menerima data Hello World!

avatar wbso
@wbso

6 Kontribusi 6 Poin

Dipost 6 tahun yang lalu

Simplenya extend itu seperti inheritance di bahasa pemrograman lain, sedangkan implements untuk meingplementasikan interface (class abstract).. Karna interface sbnernya juga class (tp berbeda) interface jg bisa mengextend interface lain

avatar fafanfi
@fafanfi

18 Kontribusi 5 Poin

Dipost 6 tahun yang lalu

Login untuk ikut Jawaban