Metode Konstruktor di Java I Kelebihan Konstruktor
Sumber: Pemrograman berorientasi objek77 Apa itu Konstruktor ? Ini adalah tipe metode khusus yang namanya sama dengan nama kelas, yang menentukan bagaimana objek diinisialisasi saat dibuat. Seperti metode lainnya, kita juga dapat mendefinisikan metode Konstruktor dalam program Java kita, namun tidak seperti metode lainnya, kita tidak dapat memanggil Konstruktor secara langsung; Java memanggil konstruktor secara otomatis ketika sebuah objek dibuat. Saat kita menggunakan kata kunci new untuk membuat objek suatu kelas, Java melakukan tiga hal:- Mengalokasikan memori untuk suatu objek.
- Inisialisasi variabel instan objek ini dengan nilai awal atau defaultnya.
- Memanggil konstruktor Metode kelas.
Konstruktor Dasar
Secara definisi, Konstruktor tampak seperti metode biasa dengan dua perbedaan utama.- Nama konstruktor dan kelas selalu sama.
- Ia tidak memiliki tipe pengembalian
class Person
{
String name;
int age;
Person (String n, int a)
{
name = n;
age = a;
}
void printPerson ()
{
System.out.print("Hi, I am " +name);
System.out.println(" I am "+ age + " years old.");
}
public static void main(String args[])
{
Person p;
p = new Person ("Ajab", 20);
p.printPerson();
p = new Person ("Rizwan", 30);
p.printPerson();
Kami mendapatkan hasilnya:
Hai, saya Ajab. Umur saya 20 tahun. Hai, saya Rizwan. Saya berumur 30 tahun
Kelebihan konstruktor
Seperti metode lainnya, Konstruktor juga dapat menerima jumlah dan tipe parameter yang berbeda, mengizinkan objek dibuat dengan properti tertentu, atau mengizinkan Konstruktor menghitung properti berdasarkan tipe masukan berbeda. Misalnya, kelas MyRectone dalam tabel tertentu membuat konstruktor MyRectone dan meneruskan parameter berbeda alih-alih membuat metode berbeda untuk argumen tertentu.class MyRectone
{
int x1 = 0;
int y1 = 0;
int x2 = 0;
int y2 = 0;
MyRectone ( int x1, int x2, int x2, int y2)
{
this.x1 = x1;
this.y1 = y1;
this.x2 = x2;
this.y2 = y2;
}
MyRectone (Point topLeft, Point bottomRight)
{
x1 = topLeft.x;
y1 = topLeft.y;
x2 = bottomRight.x;
y2 = bottomRight.y;
}
MyRectone ( Point topLeft, int w, int h)
{
x1 = topLeft.x;
y1 = top left.y;
x2 = ( x1 + w);
y2 = (y1 + h);
}
void printRect ()
{
System.out.print ("MyRectone: <" + x1 + ", " + y1);
system.out.println (", " + x2 + " ,"+ y2 + ">");
}
public static void main (String args [] )
{
MyRectone rect;
System.out.println ("Calling MyRectone with coordinates 35,35 70,70");
rect = new MyRectone (35,35,70,70);
rect.printRect();
System.out.println ("Calling MyRectone with coordinates (15,15) (30,30)");
rect = new MyRectone (15,15,30,30);
rect.printRect();
System.out.print (" Calling buildRect w/1 point (10,10),");
System.out.println ("width (50) and height (50)");
rect = new MyRectone ( new Point (10,10), 50, 50);
rect.printRect();
Kesimpulan:
Memanggil MyRectone dengan koordinat 35,35 70,70: MyRectone: <35,35,70,70> Memanggil buildRect w/1 poin (15,15), (30,30): MyRectone: <15,15,30,30 > Memanggil buildRect dengan 1 titik (10,10), lebar (50) dan tinggi (50): MyRectone:<10,10,50,50>
Memanggil Konstruktor lain
Konstruktor dapat berupa superset dari konstruktor lain yang ditentukan di kelas Anda; artinya, mereka dapat berperilaku sama dan sedikit lebih. Daripada menduplikasi perilaku yang sama di beberapa metode konstruktor di kelas kita, lebih masuk akal jika kita memanggil konstruktor pertama tersebut dari isi konstruktor kedua. Java menyediakan sintaks khusus untuk ini. Untuk memanggil konstruktor yang ditentukan di kelas saat ini, gunakan formulir ini:this (arg1, arg2, arg3… ..);
Argumen terhadap hal ini , tentu saja, merupakan argumen terhadap konstruktor.
Kelas dan Antarmuka Java Abstrak
Sumber: Dev.to Kelas abstrak adalah kelas yang memiliki beberapa metode tanpa definisi lengkap dan memiliki pengubah abstrak .- Anda tidak dapat membuat objek menggunakan konstruktor kelas abstrak.
- Anda dapat menggunakan kelas abstrak sebagai kelas dasar untuk mendefinisikan kelas turunan.
- Kelas abstrak memiliki setidaknya satu metode abstrak.
- Metode abstrak : memiliki header seperti metode biasa, tetapi tanpa isi, dan memerlukan pengubah abstrak dan titik koma.
- Metode abstrak tidak boleh bersifat pribadi.
- Kelas abstrak bisa menjadi tipe.
public abstract class Example{
private String data1;
private double data2;
public abstract double getPay();
}
Antarmuka : Mendefinisikan sekumpulan metode yang harus dimiliki oleh setiap kelas yang mengimplementasikan antarmuka ini.
- Antarmuka adalah sebuah tipe.
- Ini berisi header metode tanpa definisi dan tanpa variabel instan:
public interface Interface1{
public void method1();
public int method2();
}
Untuk mengimplementasikan antarmuka, suatu kelas harus melakukan dua hal:
- Sertakan implementasi InterfaceName .
- Kelas harus mengimplementasikan semua header metode yang tercantum di antarmuka.
public class Implementer implements Interface1 {
@Override
public void method1() {
//definition
}
@Override
public int method2() {
//definition
}
}
- Header metode dideklarasikan public .
- Kelas abstrak juga dapat mengimplementasikan antarmuka, kelas ini memberikan definisi untuk beberapa header metode di antarmuka.
- Antarmuka Java juga dapat berisi konstanta , misalnya:
public interface Constant {
public static final int JANUARY = 1, FEBRUARY = 2, MARCH = 3;
}
- Setiap kelas yang mengimplementasikan antarmuka Constant secara otomatis akan memiliki konstanta berikut, misalnya:
public class Constants implements Constant {
public static void main(String[] args) {
System.out.println(JANUARY);
}
}
- Anda dapat menggabungkan penggunaan antarmuka dengan memasukkan konstanta dan header metode ke dalam satu antarmuka.
- Java tidak mendukung pewarisan berganda, sehingga sebuah kelas hanya dapat memperluas satu kelas dasar. Namun, dengan menggunakan antarmuka, suatu kelas dapat mengimplementasikan beberapa antarmuka:
public class Implementer implements Interface1, Interface2, .. InterfaceN{
}
- Alasan mengapa kelas Java hanya dapat memperluas satu kelas dasar adalah karena jika Java mengizinkan dua kelas dasar, kedua kelas tersebut mungkin memiliki header metode yang sama dengan definisi yang berbeda, sehingga mengakibatkan inkonsistensi.
- Dua antarmuka bisa menjadi tidak kompatibel jika Anda mendefinisikan dua konstanta dengan nama yang sama dan nilai berbeda:
public interface Interface1{
public static final int ANSWEAR = 0;
}
public interface Interface1{
public static final int ANSWEAR = 3;
}
GO TO FULL VERSION