Postingan lainnya
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.
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
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!
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