java
Dalam tutorial ini, kita akan belajar tentang antarmuka Java. Kita akan mempelajari cara mengimplementasikan antarmuka dan kapan menggunakannya secara mendetail dengan bantuan contoh.
Antarmuka adalah kelas yang sepenuhnya abstrak. Ini mencakup sekelompok metode abstrak (metode tanpa badan).
Kami menggunakan interface
kata kunci untuk membuat antarmuka di Java. Misalnya,
interface Language {
public void getType();
public void getVersion();
}
Di sini,
getType()
dan getVersion()
.Seperti kelas abstrak, kita tidak dapat membuat objek antarmuka.
Untuk menggunakan antarmuka, kelas lain harus mengimplementasikannya. Kami menggunakan implements
kata kunci untuk mengimplementasikan antarmuka.
interface Polygon {
void getArea(int length, int breadth);
}
// implement the Polygon interface
class Rectangle implements Polygon {
// implementation of abstract method
public void getArea(int length, int breadth) {
System.out.println("The area of the rectangle is " + (length * breadth));
}
}
class Main {
public static void main(String[] args) {
Rectangle r1 = new Rectangle();
r1.getArea(5, 6);
}
}
Keluaran
The area of the rectangle is 30
Pada contoh di atas, kami telah membuat antarmuka bernama Poligon . Antarmuka berisi metode abstrak getArea()
.
Di sini, Persegi Panjang kelas mengimplementasikan Poligon . Dan, menyediakan implementasi getArea()
metode.
// create an interface
interface Language {
void getName(String name);
}
// class implements interface
class ProgrammingLanguage implements Language {
// implementation of abstract method
public void getName(String name) {
System.out.println("Programming Language: " + name);
}
}
class Main {
public static void main(String[] args) {
ProgrammingLanguage language = new ProgrammingLanguage();
language.getName("Java");
}
}
Keluaran
Programming Language: Java
Pada contoh di atas, kami telah membuat antarmuka bernama Bahasa . Antarmuka menyertakan metode abstrak getName()
.
Di sini, ProgrammingLanguage class mengimplementasikan antarmuka dan menyediakan implementasi untuk metode tersebut.
Di Java, sebuah kelas juga dapat mengimplementasikan beberapa antarmuka. Misalnya,
interface A {
// members of A
}
interface B {
// members of B
}
class C implements A, B {
// abstract members of A
// abstract members of B
}
Mirip dengan kelas, antarmuka dapat memperluas antarmuka lain. extends
kata kunci digunakan untuk memperluas antarmuka. Misalnya,
interface Line {
// members of Line interface
}
// extending interface
interface Polygon extends Line {
// members of Polygon interface
// members of Line interface
}
Di sini, Poligon antarmuka memperluas Baris antarmuka. Sekarang, jika ada kelas yang mengimplementasikan Poligon , itu harus menyediakan implementasi untuk semua metode abstrak dari kedua Line dan Poligon .
Sebuah antarmuka dapat memperluas beberapa antarmuka. Misalnya,
interface A {
...
}
interface B {
...
}
interface C extends A, B {
...
}
Sekarang setelah kita mengetahui apa itu antarmuka, mari kita pelajari mengapa antarmuka digunakan di Java.
getArea()
menghitung luas poligon tetapi cara menghitung luas berbeda untuk poligon yang berbeda. Oleh karena itu, implementasi getArea()
independen satu sama lain.getArea()
sebagai spesifikasi di dalam antarmuka Poligon . Ini seperti menetapkan aturan bahwa kita harus bisa mendapatkan luas setiap poligon. getArea()
metode.
interface Line {
…
}
interface Polygon {
…
}
class Rectangle implements Line, Polygon {
…
}
Catatan :Semua metode di dalam antarmuka secara implisit public
dan semua bidang secara implisit public static final
. Misalnya,
interface Language {
// by default public static final
String type = "programming language";
// by default public
void getName();
}
Dengan rilis Java 8, sekarang kita dapat menambahkan metode dengan implementasi di dalam antarmuka. Metode ini disebut metode default.
Untuk mendeklarasikan metode default di dalam antarmuka, kami menggunakan default
kata kunci. Misalnya,
public default void getSides() {
// body of getSides()
}
Mari kita ambil skenario untuk memahami mengapa metode default diperkenalkan di Java.
Misalkan, kita perlu menambahkan metode baru di antarmuka.
Kita dapat menambahkan metode di antarmuka kita dengan mudah tanpa implementasi. Namun, itu bukan akhir dari cerita. Semua kelas kami yang mengimplementasikan antarmuka itu harus menyediakan implementasi untuk metode tersebut.
Jika sejumlah besar kelas mengimplementasikan antarmuka ini, kita perlu melacak semua kelas ini dan membuat perubahan pada mereka. Ini tidak hanya membosankan tetapi juga rawan kesalahan.
Untuk mengatasi ini, Java memperkenalkan metode default. Metode default diwarisi seperti metode biasa.
Mari kita ambil contoh untuk memiliki pemahaman yang lebih baik tentang metode default.
interface Polygon {
void getArea();
// default method
default void getSides() {
System.out.println("I can get sides of a polygon.");
}
}
// implements the interface
class Rectangle implements Polygon {
public void getArea() {
int length = 6;
int breadth = 5;
int area = length * breadth;
System.out.println("The area of the rectangle is " + area);
}
// overrides the getSides()
public void getSides() {
System.out.println("I have 4 sides.");
}
}
// implements the interface
class Square implements Polygon {
public void getArea() {
int length = 5;
int area = length * length;
System.out.println("The area of the square is " + area);
}
}
class Main {
public static void main(String[] args) {
// create an object of Rectangle
Rectangle r1 = new Rectangle();
r1.getArea();
r1.getSides();
// create an object of Square
Square s1 = new Square();
s1.getArea();
s1.getSides();
}
}
Keluaran
The area of the rectangle is 30 I have 4 sides. The area of the square is 25 I can get sides of a polygon.
Pada contoh di atas, kami telah membuat antarmuka bernama Poligon . Ini memiliki metode default getSides()
dan metode abstrak getArea()
.
Di sini, kami telah membuat dua kelas Rectangle dan Persegi yang mengimplementasikan Poligon .
Persegi Panjang class menyediakan implementasi getArea()
metode dan menimpa getSides()
metode. Namun, Persegi class hanya menyediakan implementasi getArea()
metode.
Sekarang, sambil memanggil getSides()
metode menggunakan Persegi Panjang objek, metode yang diganti disebut. Namun, dalam kasus Persegi objek, metode default dipanggil.
Java 8 juga menambahkan fitur lain untuk menyertakan metode statis di dalam antarmuka.
Mirip dengan kelas, kita dapat mengakses metode statis antarmuka menggunakan referensinya. Misalnya,
// create an interface
interface Polygon {
staticMethod(){..}
}
// access static method
Polygon.staticMethod();
Catatan :Dengan rilis Java 9, metode pribadi juga didukung di antarmuka.
Kami tidak dapat membuat objek antarmuka. Oleh karena itu, metode pribadi digunakan sebagai metode pembantu yang menyediakan dukungan untuk metode lain dalam antarmuka.
Mari kita lihat contoh Antarmuka Java yang lebih praktis.
// To use the sqrt function
import java.lang.Math;
interface Polygon {
void getArea();
// calculate the perimeter of a Polygon
default void getPerimeter(int... sides) {
int perimeter = 0;
for (int side: sides) {
perimeter += side;
}
System.out.println("Perimeter: " + perimeter);
}
}
class Triangle implements Polygon {
private int a, b, c;
private double s, area;
// initializing sides of a triangle
Triangle(int a, int b, int c) {
this.a = a;
this.b = b;
this.c = c;
s = 0;
}
// calculate the area of a triangle
public void getArea() {
s = (double) (a + b + c)/2;
area = Math.sqrt(s*(s-a)*(s-b)*(s-c));
System.out.println("Area: " + area);
}
}
class Main {
public static void main(String[] args) {
Triangle t1 = new Triangle(2, 3, 4);
// calls the method of the Triangle class
t1.getArea();
// calls the method of Polygon
t1.getPerimeter(2, 3, 4);
}
}
Keluaran
Area: 2.9047375096555625 Perimeter: 9
Dalam program di atas, kami telah membuat antarmuka bernama Polygon . Ini termasuk metode default getPerimeter()
dan metode abstrak getArea()
.
Kita dapat menghitung keliling semua poligon dengan cara yang sama sehingga kita mengimplementasikan tubuh getPerimeter()
di Poligon .
Sekarang, semua poligon yang mengimplementasikan Poligon dapat menggunakan getPerimeter()
untuk menghitung keliling.
Namun, aturan untuk menghitung luas berbeda untuk poligon yang berbeda. Oleh karena itu, getArea()
disertakan tanpa implementasi.
Setiap kelas yang mengimplementasikan Poligon harus menyediakan implementasi getArea()
.
java
Antarmuka Set Java Dalam tutorial ini, kita akan belajar tentang antarmuka Set di Java dan metodenya. Set antarmuka Java Collections framework menyediakan fitur dari himpunan matematika di Jawa. Ini memperluas Collection antarmuka. Berbeda dengan List antarmuka, set tidak boleh berisi elemen dupl
Antarmuka Java SortedSet Dalam tutorial ini, kita akan belajar tentang antarmuka SortedSet di Java dan metodenya dengan bantuan sebuah contoh. SortedSet antarmuka kerangka Java Collections digunakan untuk menyimpan elemen dengan beberapa urutan dalam satu set. Ini memperluas antarmuka Set. Kel
Antarmuka Iterator Java Dalam tutorial ini, kita akan belajar tentang antarmuka Java Iterator dengan bantuan sebuah contoh. Iterator antarmuka kerangka koleksi Java memungkinkan kita untuk mengakses elemen koleksi. Ini memiliki subinterface ListIterator . Semua koleksi Java menyertakan iterator
Antarmuka Java ListIterator Dalam tutorial ini, kita akan belajar tentang antarmuka Java ListIterator dengan bantuan sebuah contoh. ListIterator antarmuka kerangka koleksi Java menyediakan fungsionalitas untuk mengakses elemen daftar. Ini adalah dua arah. Ini berarti memungkinkan kita untuk mengu