JavaRush /Java Blog /Random-ID /Rehat kopi #107. Metode Konstruktor di Java I Kelebihan K...

Rehat kopi #107. Metode Konstruktor di Java I Kelebihan Konstruktor. Kelas dan Antarmuka Java Abstrak

Dipublikasikan di grup Random-ID

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. Rehat kopi #107.  Metode Konstruktor di Java I Kelebihan Konstruktor.  Abstrak Kelas dan Antarmuka Java - 1Seperti 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.
Jika suatu kelas tidak mendefinisikan metode Konstruktor apa pun, kita akan tetap membuat objek dari kelas tersebut, tetapi kita harus menyetel variabel instan atau memanggil metode lain, yang selanjutnya harus menginisialisasi objek dengan objek tersebut. Dengan mendefinisikan metode Konstruktor di kelas kita sendiri, kita dapat menetapkan nilai awal variabel instan, memanggil metode berdasarkan variabel tersebut, atau memanggil metode pada objek lain, atau menghitung properti awal objek kita. Kita juga dapat membebani Konstruktor seperti metode normal untuk membuat objek yang memiliki properti tertentu berdasarkan argumen yang kita teruskan ke new .

Konstruktor Dasar

Secara definisi, Konstruktor tampak seperti metode biasa dengan dua perbedaan utama.
  • Nama konstruktor dan kelas selalu sama.
  • Ia tidak memiliki tipe pengembalian
Misalnya, tabel di bawah menunjukkan kelas Person sederhana dengan konstruktor yang menginisialisasi variabel instannya berdasarkan argumen baru . Kelas ini juga menyertakan metode dimana suatu objek dapat memperkenalkan dirinya sendiri, dan metode main() untuk menguji masing-masing kelas ini.
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 . Rehat kopi #107.  Metode Konstruktor di Java I Kelebihan Konstruktor.  Kelas dan Antarmuka Java Abstrak - 2
  • 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.
Contoh:
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;
}
Komentar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION