Inheritance adalah konsep penting dalam pemrograman berorientasi objek. Bila diterjemahkan secara harafiah, artinya adalah Pewarisan.
Istilah Inheritance akan lebih sering digunakan karena istilah ini sudah dikenal luas dalam dunia pemrograman internasional. Fungsi utama inheritance adalah untuk membuat Class baru dari class yang sudah ada.
Inheritance menjadikan suatu class menjadi lebih reusable dalam arti lebih berguna karena dapat digunakan untuk menghasilkan class-class lain yang lebih spesifik.
Apabila ada suatu class mewarisi class lain maka dalam definisi class harus ditambakan extends. Agar lebih jelasnya berikut adalah contoh programnya.

Listing Program - Hewan.java


public class Hewan{
private String tipe;
    public Hewan(String tipe)
    {
    this.tipe = tipe;
    }
    public String toString ()
    {
        return "ini adalah " +tipe ;
}
public void bersuara (){};
}

Lalu kita mendefinisikan Vlass Ayam dan Kucing yang menjadi turunan Class Hewan.

Listing Program - Ayam.java

public class Ayam extends Hewan
{
private String nama ;
private String jenis ;
public Ayam(String nama)
    {
super ("Ayam");
this.nama = nama;
this.jenis = "Tidak diketahui";
    }
public Ayam (String nama, String jenis)
    {
    super ("Ayam");
this.nama = nama;
this.jenis = jenis;
}
public String toString ()
    {
    return super.toString ()+"\nIni adalah "+jenis+"bernama "+nama;
    }
    public void bersuara()
    {
        System.out.println("Kukuruyuuuk petok petok");
    }
}

Listing Program - Kucing.java

public class Kucing extends Hewan
{
private String nama ;
private String jenis ;
public Kucing(String nama)
    {
super ("Kucing");
this.nama = nama;
this.jenis = "Tidak diketahui";
    }
public Kucing (String nama, String jenis)
    {
    super ("Kucing");
this.nama = nama;
this.jenis = jenis;
}
public String toString ()
    {
    return super.toString ()+"\nJenis kucing ini adalah "+jenis+"bernama "+nama;
    }
    public void bersuara()
    {
        System.out.println("Meooong Meooooong");
    }
}

Polimorfisme 

Kata Polimorfisme memiliki kemampuan untuk memiliki bentuk atau wujud berbeda. Dalam istilah pemrograman, kata ini memiliki arti kemampuan dari suatu variabel referensi objek untuk memiliki aksi berbeda bila method yang sama dipanggil, dimana aks method tergantung dari tipe objeknya.
Berikut adalah contoh programnya.

Listing Program - Polimorfise.java

import java.util.Random;
public class Polimorfisme{
    public static void main (String args[])
    {
        Hewan[] hewannya = {
            new Kucing ("Kiti", "Persia "),
                new Ayam ("Jalu","Buras ")};
            Hewan pilihHewan ;
            Random pilih = new Random ();
            for (int i=0;i<2 ;i++ )
            {
                pilihHewan=
                    hewannya [pilih.nextInt (hewannya.length)];
                System.out.println("\nPilihan Anda:\n"+pilihHewan);
                pilihHewan.bersuara();
            }
    }
}