Menggunakan Parameter Tipe Terikat Java dan Fungsinya
- Ingin menggunakan seluruh class sebagai parameter dengan kondisi bahwa method umum Java dapat diciptakan. Serta, sebagaimana halnya constructor yang berfungsi sebagai spesial method, maka constructor juga bisa digunakan sebagai tipe parameter umum.
- Ingin membatasi jenis objek yang dapat digunakan dalam tipe parameter. Misalnya dalam metode yang membandingkan dua objek dan ingin memastikan bahwa objek yang diterima adalah yang sebanding.
- Inovasi dari fungsi method tersebut sama dengan method tak terikat kecuali bahwa jika programmer ingin menggunakan class apapun yang tidak sebanding, maka hasilnya adalah pesan error pada program.
- Daftarkan tipe nama-nama parameter.
- Beserta extend keyword.
- dan batas atasnya (upper bound).
Sintak:
<T extends superClassName>
Catatan: Pada konteks ini, extend digunakan sebagai istilah umum untuk makna "extends" (seperti pada class). Juga, spesifikasi T hanya bisa digantikan oleh superClassName, atau subclass dari superClassName. Dengan demikian, superclass didefinisikan secara inklusif dari batas atas (upper limit).
// Variabel tipe terikat pada
// bahasa pemrograman Java
// class ini hanya menerima
// tipe parameter dari class
// extend class A atau class A
// itu sendiri.
// Melewatkan tipe parameter
// yang lain yang bukan extend
// class A akan mengakibatkan
// error pada saat kompilasi
// program
class Bound<t extends A>
{
private T objRef;
public Bound(T obj){
this.objRef = obj;
}
public void doRunTest(){
this.objRef.displayClass();
}
}
class A
{
public void displayClass()
{
System.out.println("Dalam"
+" super class A");
}
}
class B extends A
{
public void displayClass()
{
System.out.println("Dalam sub"
+" class B");
}
}
class C extends A
{
public void displayClass()
{
System.out.println("Dalam sub"
+" class C");
}
}
public class BoundedClass
{
public static void main(String a[])
{
// Menciptakan objek dari sub
// class c dan melewatkannya
// menuju parameter tipe
// terikat
Bound<c> bec = new Bound<c>(new C());
bec.doRunTest();
// Menciptakan objek dari sub
// class B dan melewatkannya
// menuju parameter tipe
// terikat
Bound<b> beb = new Bound<b>(new B());
beb.doRunTest();
// Sama seperti melewatkan
// super class A
Bound<a> bea = new Bound<a>(new A());
bea.doRunTest();
}
}
Dalam sub class B
Dalam super class A
// Variabel tipe terikat pada
// bahasa pemrograman Java
// class ini hanya menerima
// tipe parameter dari class
// extend class A atau class A
// itu sendiri.
// Melewatkan tipe parameter
// yang lain yang bukan extend
// class A akan mengakibatkan
// error pada saat kompilasi
// program
class Bound<t extends A>
{
private T objRef;
public Bound(T obj){
this.objRef = obj;
}
public void doRunTest(){
this.objRef.displayClass();
}
}
class A
{
public void displayClass()
{
System.out.println("Dalam"
+" super class A");
}
}
class B extends A
{
public void displayClass()
{
System.out.println("Dalam sub"
+" class B");
}
}
class C extends A
{
public void displayClass()
{
System.out.println("Dalam sub"
+" class C");
}
}
public class BoundedClass
{
public static void main(String a[])
{
// Menciptakan objek dari sub
// class c dan melewatkannya
// menuju parameter tipe
// terikat
Bound<c> bec = new Bound<c>(new C());
bec.doRunTest();
// Menciptakan objek dari sub
// class B dan melewatkannya
// menuju parameter tipe
// terikat
Bound<b> beb = new Bound<b>(new B());
beb.doRunTest();
// Sama seperti melewatkan
// super class A
Bound<a> bea = new Bound<a>(new A());
bea.doRunTest();
// String bukanlah extends
// dari class A
Bound<string> bes = new Bound<string>(new String());
bea.doRunTest();
}
}
Variabel terikat tipe berganda
Parameter tipe terikat dapat digunakan bersama dengan method, class, dan interface.
Java juga mendukung variabel tipe terikat berganda. Pada kasus ini A dapat menjadi sebagai interface atau class. Jika A adalah class, maka B dan C harus menjadi interface-nya. Program tidak bisa memiliki lebih dari satu class pada variabel terikat tipe berganda.
Sintak:
<T extends superClassName & Interface>
Contoh:
// Variabel tipe terikat pada
// bahasa pemrograman Java
class Bound<t extends A & B>
{
private T objRef;
public Bound(T obj){
this.objRef = obj;
}
public void doRunTest(){
this.objRef.displayClass();
}
}
interface B
{
public void displayClass();
}
class A implements B
{
public void displayClass()
{
System.out.println("Dalam"
+" super class A");
}
}
public class BoundedClass
{
public static void main(String a[])
{
// menciptakan objek dari sub
// class A dan melewatkan nya
// menuju parameter tipe
// terikat
Bound<a> bea = new Bound<a>(new A());
bea.doRunTest();
}
}
- 6 Aturan Penting Switch Statement pada Java [klik]
- 4 Poin Utama Penggunaan String Switch Case pada Java [klik]
- Cara Sederhana Forward Deklarasi Java [klik]
- 5 Cara Konversi Tipe Data pada Java [klik]
- 2 Contoh Perluasan Konversi Tipe Data Primitif pada Java [klik]
- 3 Jenis Utama Teks Komentar pada Bahasa Pemrograman Java [klik]
- 2 Contoh Keyword Goto pada Bahasa Pemrograman Java [klik]
Apa fungsi keyword extends pada bahasa pemrograman Java?
BalasHapusKeyword extends pada bahasa pemrograman Java digunakan untuk memperluas class yang merupakan pewarisan dari class lainnya pada program.
HapusPada Java, sangat dimungkinkan untuk dilakukan pewarisan atribut dan method dari satu class ke class lainnya.
Pada Java, keyword extends digunakan untuk menunjukkan bahwa new class diturunkan dari inheritance class sebelumnya. Jadi, pada dasarnya, fungsi dari keyword extends adalah untuk memperluas fungsionalitas class pada program Java.
HapusApakah Java mendukung konsep multiple inheritance?
BalasHapusJava tidak mendukung penggunaan konsep pewarisan ganda atau multiple inheritance, inilah mengapa programmer tidak bisa melakukan perluasan dari dua class yang berbeda secara bersamaan pada sebuah program. Sebaliknya, dapat digunakan satu buah class untuk dilakukan perluasan, dan juga dapat menggunakan interface untuk menyertakan fungsionalitas tambahan pada program Java.
Hapus