Rabu, 04 Mei 2016

Pewarisan, Polimorfisme, dan Interface

Pewarisan, Polimorfisme, dan Interface

1. Tujuan

    Dalam bagian ini, kita akan membicarakan bagaimana suatu class dapat mewariskan sifat dari class yang sudah ada. Class ini dinamakan subclass dan induk class dinamakan superclass. Kita juga akan membicarakan sifat khusus dari Java dimana kita dapat secara otomatis memakai method yand tepat untuk setiap object tanpa memperhatikan asal dari subclass object. Sifat ini dinamakan polimorfisme. Pada akhirnya, kita akan mendiskusikan tentang interface yang membantu mengurangi penulisan 

program.
  1.  Pada akhir pembahasan, diharapkan pembaca dapat : 
  2.  Mendefinisikan superclasses dan subclasses
  3.  Override method dari superclasses
  4.  Membuat method final dan class final  

2. Pewarisan 

Dalam Java, semua class, termasuk class yang membangun Java API, adalah subclasses dari superclass Object. Contoh hirarki class diperlihatkan di bawah ini.

Beberapa class di atas class utama dalam hirarki class dikenal sebagai superclass. Sementara beberapa class di bawah class pokok dalam hirarki class dikenal sebagai subclass dari class tersebut

Pewarisan adalah keuntungan besar dalam pemrograman berbasis object karena suatu sifat atau method didefinisikan dalam superclass, sifat ini secara otomatis diwariskan dari semua subclasses. Jadi, Anda dapat menuliskan kode method hanya sekali dan mereka dapat digunakan oleh semua subclass. Subclass hanya perlu mengimplementasikan 

3. Mendefinisikan Superclass dan Subclass

     Untuk memperoleh suatu class, kita menggunakan kata kunci extend. Untuk mengilustrasikan ini, kita akan membuat contoh class induk. Dimisalkan kita mempunyai class induk yang dinamakan Person. 

public class Person 

{ 
           protected String name; 
           protected String address;
 /**

 * Default constructor

 */ public Person (){

 System.out.println(“Inside Person:Constructor”);
 
 name = "";
 address = ""; 
}

 /** 

* Constructor dengan dua parameter 

*/

 public Person( String name, String address ){ 

this.name = name; 

this.address = address;

 }

 /** 

* Method accessor 

*/ 

public String getName()
{ 
return name; 
} 
public String getAddress()
{ return address;
 } 
public void setName( String name )
{ this.name = name; 
} 
public void setAddress( String add )
{
 this.address = add; } 
}

     Perhatikan bahwa atribut name dan address dideklarasikan sebagai protected. Alasannya kita melakukan ini yaitu, kita inginkan atribut-atribut ini untuk bisa diakses oleh subclasses dari superclassess. Jika kita mendeklarasikannya sebagai private, subclasses tidak dapat menggunakannya. Catatan bahwa semua properti dari superclass yang dideklarasikan sebagai public, protected dan default dapat diakses oleh subclasses-nya.

    Sekarang, kita ingin membuat class lain bernama Student. Karena Student juga sebagai Person, kita putuskan hanya meng-extend class Person, sehingga kita dapat mewariskan semua properti dan method dari setiap class Person yang ada. Untuk melakukan ini, kita tulis,

             public class Student extends Person

 { public Student()

{

 System.out.println(“Inside Student:Constructor”);
 //beberapa kode di sini } 

// beberapa kode di sini } 


Ketika object Student di-instantiate, default constructor dari superclass secara mutlak meminta untuk melakukan inisialisasi yang seharusnya. Setelah itu, pernyataan di dalam subclass dieksekusi. Untuk mengilustrasikannya, perhatikan kode berikut, 

public static void main( String[] args ){ 

Student anna = new Student(); 

}

 Dalam kode ini, kita membuat sebuah object dari class Student. Keluaran dari program adalah, 

  Inside Person:Constructor
  Inside Student:Constructor 

Perbedaan antara metode Overloading dan Overriding di java

Difference between method Overloading and Overriding in java
Perbedaan antara metode Overloading dan Overriding di java

Overloading vs Overriding in Java ?

  1. Overloading terjadi pada saat kompilasi sementara Melebihi terjadi saat runtime: Pengikatan kelebihan beban metode panggilan untuk definisi memiliki terjadi pada saat kompilasi namun pengikatan metode ditimpa panggilan untuk definisi yang terjadi saat runtime.
  2. metode statis dapat kelebihan beban yang berarti kelas dapat memiliki lebih dari satu metode statis nama yang sama. metode statis tidak dapat diganti, bahkan jika Anda menyatakan metode statis yang sama di kelas anak itu tidak ada hubungannya dengan metode yang sama dari kelas induk.
  3. Perbedaan yang paling mendasar adalah bahwa overloading sedang dilakukan di kelas yang sama sedangkan untuk dasar dan anak kelas utama yang diperlukan. Utama adalah tentang memberikan implementasi khusus untuk metode yang diwarisi dari kelas induk.
  4. Mengikat statis digunakan untuk metode kelebihan beban dan dinamis mengikat sedang digunakan untuk metode ditimpa / override.
  5. Kinerja: Overloading memberikan kinerja yang lebih baik dibandingkan dengan override. Alasannya adalah bahwa mengikat metode ditimpa sedang dilakukan saat runtime.
  6. metode swasta dan akhir dapat kelebihan beban tetapi mereka tidak dapat diganti. Ini berarti kelas dapat memiliki lebih dari satu metode swasta / akhir dari nama yang sama tetapi kelas anak tidak bisa menimpa metode swasta / akhir dari kelas dasar mereka.
  7. Kembali jenis metode tidak masalah dalam hal metode overloading, dapat sama atau berbeda. Namun dalam kasus metode override metode utama dapat memiliki jenis kembali yang lebih spesifik (lihat ini).
  8. daftar argumen harus berbeda saat melakukan metode overloading. daftar argumen harus sama dalam metode Melebihi.

Overloading example

//A class for adding upto 5 numbers
class Sum
{
    int add(int n1, int n2) 
    {
        return n1+n2;
    }
    int add(int n1, int n2, int n3) 
    {
        return n1+n2+n3;
    }
    int add(int n1, int n2, int n3, int n4) 
    {
        return n1+n2+n3+n4;
    }
    int add(int n1, int n2, int n3, int n4, int n5) 
    {
        return n1+n2+n3+n4+n5;
    }
    public static void main(String args[])
    {
     Sum obj = new Sum();
     System.out.println("Sum of two numbers: "+obj.add(20, 21));
     System.out.println("Sum of three numbers: "+obj.add(20, 21, 22));
     System.out.println("Sum of four numbers: "+obj.add(20, 21, 22, 23));
     System.out.println("Sum of five numbers: "+obj.add(20, 21, 22, 23, 24));
    }
}

Output:
Sum of two numbers: 41
Sum of three numbers: 63
Sum of four numbers: 86
Sum of five numbers: 110
Di sini kita memiliki 4 versi metode yang sama add. Kami overloading metode add () di sini.
package beginnersbook.com;
class CarClass
{
    public int speedLimit() 
    {
        return 100;
    }
}
class Ford extends CarClass
{
    public int speedLimit()
    {
        return 150;
    }
    public static void main(String args[])
    {
     CarClass obj = new Ford();
     int num= obj.speedLimit();
     System.out.println("Speed Limit is: "+num);
    }
}
Output:
Speed Limit is: 150





Object Casting Java

Object Casting Java

 Apa itu Casting?

 Menugaskan salah satu tipe data yang lain atau satu objek yang lain dikenal sebagai casting. Java mendukung dua jenis Casting - tipe data casting dan objek casting.

          Kondisi menetapkan objek kelas yang berbeda satu sama lain

  1.  objek kelas yang sama dapat diberikan satu sama lain dan itu adalah apa yang telah kita lakukan dengan kelas Officer 1.
  2. objek subclass dapat ditugaskan ke objek kelas super dan pengecoran ini dilakukan secara implisit. Hal ini dikenal sebagai upcasting (ke atas dalam hirarki dari subclass ke kelas super).
  3. strong> Java tidak mengizinkan untuk menetapkan objek kelas super ke objek subclass (implisit) dan masih melakukannya, kita perlu pengecoran eksplisit. Hal ini dikenal sebagai downcasting (kelas super untuk subclass). Downcasting membutuhkan konversi eksplisit.
Program menjelaskan peraturan di atas Jawa Obyek Casting

 {
  public void smell() // I
  {
    System.out.println("All flowers give smell, if you can smell");
  }
}  
public class Rose extends Flower
{
  public void smell() // II
  {
    System.out.println("Rose gives rosy smell");
  }
  public static void main(String args[])
  {
    Flower f = new Flower();
    Rose r = new Rose();
    f.smell();                 // I
    r.smell();                 // II
 
    f = r;                      // subclass to super class, it is valid
    f.smell();         // II
 
    // r  = f;                 // super class to subclass, not valid
    r = (Rose) f;               // explicit casting
    f.smell(); // II
  }
}
Object Casting Java
Layar Output Java Obyek Casting

Super class Flower mencakup hanya satu metode smell () dan diganti oleh subclass Rose.

1
2
  f.smell(); // I
  r.smell(); // II

Dalam contoh di atas dua statements, tidak ada yang baru karena kedua objek panggil own smell () metode mereka. Amati two statements. berikut.

2
  f = r;                                          
  f.smell();
http://www.resepkuekeringku.com/2014/11/resep-donat-empuk-ala-dunkin-donut.html http://www.resepkuekeringku.com/2015/03/resep-kue-cubit-coklat-enak-dan-sederhana.html http://www.resepkuekeringku.com/2014/10/resep-donat-kentang-empuk-lembut-dan-enak.html http://www.resepkuekeringku.com/2014/07/resep-es-krim-goreng-coklat-kriuk-mudah-dan-sederhana-dengan-saus-strawberry.html http://www.resepkuekeringku.com/2014/06/resep-kue-es-krim-goreng-enak-dan-mudah.html http://www.resepkuekeringku.com/2014/09/resep-bolu-karamel-panggang-sarang-semut-lembut.html