Mengenal Overloading
Method Overloading adalah sebuah kemampuan yang membolehkan sebuah
class mempunyai 2 atau lebih method dengan nama yang sama, yang
membedakan adalah parameternya.
Pada method overloading perbedaan parameter mencakup :
- Jumlah parameter
- Tipe data dari parameter
- Urutan dari tipe data parameter
Mengenal Overriding
Method overriding merupakan method yang parrent class yang ditulis
kembali oleh subclass. Aturan dari method overriding pada Java :
- Parameter yang terdapat pada method overriding di subclass harus sama dengan parameter yang terdapat pada parent class.
- Aturan hak akses, hak akses method overriding di subclass tidak
boleh lebih ketat di bandingkan dengan hak akses method pada parent
class.
Berikut adalah contohnya..
Source code:
BangunDatar
/**
* Write a description of class BangunDatar here.
*
* @author Davin Masasih - 5115100113
* @version 0.1
*/
public class BangunDatar
{
public void hitungLuas(){
System.out.println("belum terdefinisi luas apa yang di hitung");
}
public void hitungKeliling(){
System.out.println("belum terdefinisi keliling apa yang di hitung\n");
}
}
Source code:
Lingkaran
/**
* Write a description of class Lingkaran here.
*
* @author Davin Masasih - 5115100113
* @version 0.1
*/
public class Lingkaran extends BangunDatar
{
public final double phi = 22.7;
double r;
public Lingkaran(){
r = 7;
}
public Lingkaran(double inputR){
this.r = inputR;
}
public double getR(){
return r;
}
public void setR(double inputR){
this.r = inputR;
}
public void hitungLuas(){
double luas;
luas = phi * this.r * this.r;
System.out.println("luas Lingkaran dengan r: "+r+" cm adalah "+luas+" cm kuadrat.");
}
public void hitungKeliling(){
double keliling; //deklarasi variabel lokal
keliling = 2 * phi * this.r;
System.out.println("keliling Lingkaran dengan r: "+r+" cm adalah "+keliling+" cm.\n");
}
}
Source code:
Segitiga
/**
* Write a description of class Segitiga here.
*
* @author Davin Masasih - 5115100113
* @version 0.1
*/
public class Segitiga extends BangunDatar
{
double alas, tinggi, hipotenusa;
public Segitiga(){
alas = 6;
tinggi = 8;
hipotenusa = 10;
}
public Segitiga(double inputAlas){
this.alas = inputAlas;
tinggi = 10;
hipotenusa = 21;
}
public Segitiga(double inputAlas, double inputTinggi){
this.alas = inputAlas;
this.tinggi = inputTinggi;
hipotenusa = 15;
}
public Segitiga(double inputAlas, double inputTinggi, double inputHipotenusa){
this.alas = inputAlas;
this.tinggi = inputTinggi;
this.hipotenusa = inputHipotenusa;
}
public double getAlas(){
return alas;
}
public void setAlas(double inputAlas){
this.alas = inputAlas;
}
public double getTinggi(){
return tinggi;
}
public void setTinggi(double inputTinggi){
this.tinggi = inputTinggi;
}
public double getHipotenusa(){
return hipotenusa;
}
public void setHipotenusa(double inputHipotenusa){
this.hipotenusa = inputHipotenusa;
}
public void hitungLuas(){
double luas;
luas = 0.5 * this.alas * this.tinggi;
System.out.println("luas Segitiga dengan alas: "+alas+" cm, tinggi: "+tinggi+" cm, dan sisi miring: "+hipotenusa+" cm adalah "+luas+" cm kuadrat.");
}
public void hitungKeliling(){
double keliling; //deklarasi variabel lokal
keliling = alas + tinggi + hipotenusa;
System.out.println("keliling Segitiga dengan alas: "+alas+" cm, tinggi: "+tinggi+" cm, dan sisi miring: "+hipotenusa+" cm adalah "+keliling+" cm.\n");
}
}
Source code:
BujurSangkar
/**
* Write a description of class BujurSangkar here.
*
* @author Davin Masasih - 5115100113
* @version 0.1
*/
public class BujurSangkar extends BangunDatar
{
double alas, tinggi, hipotenusa;
public BujurSangkar(){
alas = 3;
tinggi = 4;
hipotenusa = 5;
}
public BujurSangkar(double inputAlas){
this.alas = inputAlas;
tinggi = 12;
hipotenusa = 27;
}
public BujurSangkar(double inputAlas, double inputTinggi){
this.alas = inputAlas;
this.tinggi = inputTinggi;
hipotenusa = 14;
}
public BujurSangkar(double inputAlas, double inputTinggi, double inputHipotenusa){
this.alas = inputAlas;
this.tinggi = inputTinggi;
this.hipotenusa = inputHipotenusa;
}
public double getAlas(){
return alas;
}
public void setAlas(double inputAlas){
this.alas = inputAlas;
}
public double getTinggi(){
return tinggi;
}
public void setTinggi(double inputTinggi){
this.tinggi = inputTinggi;
}
public double getHipotenusa(){
return hipotenusa;
}
public void setHipotenusa(double inputHipotenusa){
this.hipotenusa = inputHipotenusa;
}
public void hitungLuas(){
double luas;
luas = this.alas * this.tinggi;
System.out.println("luas Bujur Sangkar dengan alas: "+alas+" cm, tinggi: "+tinggi+" cm, dan hipotenusa: "+hipotenusa+" cm adalah "+luas+" cm kuadrat.");
}
public void hitungKeliling(){
double keliling; //deklarasi variabel lokal
keliling = 2 * (alas + hipotenusa);
System.out.println("keliling Bujur Sangkar dengan alas: "+alas+" cm, tinggi: "+tinggi+" cm, dan hipotenusa: "+hipotenusa+" cm adalah "+keliling+" cm.\n");
}
}
Source code:
PersegiPanjang
/**
* Write a description of class PersegiPanjang here.
*
* @author Davin Masasih - 5115100113
* @version 0.1
*/
public class PersegiPanjang extends BangunDatar
{
double panjang, lebar;
public PersegiPanjang(){
panjang = 10;
lebar = 14;
}
public PersegiPanjang(double inputPanjang){
this.panjang = inputPanjang;
lebar = 11;
}
public PersegiPanjang(double inputPanjang, double inputLebar){
this.panjang = inputPanjang;
this.lebar = inputLebar;
}
public double getPanjang(){
return panjang;
}
public void setPanjang(double inputPanjang){
this.panjang = inputPanjang;
}
public double getLebar(){
return lebar;
}
public void setLebar(double inputLebar){
this.lebar = inputLebar;
}
public void hitungLuas(){
double luas;
luas = this.panjang * this.lebar;
System.out.println("luas Persegi Panjang dengan panjang: "+panjang+" cm dan lebar: "+lebar+" cm adalah "+luas+" cm kuadrat.");
}
public void hitungKeliling(){
double keliling; //deklarasi variabel lokal
keliling = 2 * (panjang + lebar);
System.out.println("keliling Persegi Panjang dengan panjang: "+panjang+" cm dan lebar: "+lebar+" cm adalah "+keliling+" cm.\n");
}
}
Source code:
BangunDatarTest
/**
* Write a description of class BangunDatarTest here.
*
* @author Davin Masasih - 5115100113
* @version 0.1
*/
public class BangunDatarTest
{
public static void main(String[] args){
BangunDatar bd = new BangunDatar();
bd.hitungLuas();
bd.hitungKeliling();
Lingkaran l = new Lingkaran();
l.hitungLuas();
l.hitungKeliling();
Lingkaran l1 = new Lingkaran(9);
l1.hitungLuas();
l1.hitungKeliling();
Segitiga s = new Segitiga();
s.hitungLuas();
s.hitungKeliling();
Segitiga s1 = new Segitiga(15);
s1.hitungLuas();
s1.hitungKeliling();
Segitiga s2 = new Segitiga(7, 9);
s2.hitungLuas();
s2.hitungKeliling();
Segitiga s3 = new Segitiga(3, 4, 5);
s3.hitungLuas();
s3.hitungKeliling();
BujurSangkar bs = new BujurSangkar();
bs.hitungLuas();
bs.hitungKeliling();
BujurSangkar bs1 = new BujurSangkar(15);
bs1.hitungLuas();
bs1.hitungKeliling();
BujurSangkar bs2 = new BujurSangkar(7, 11);
bs2.hitungLuas();
bs2.hitungKeliling();
BujurSangkar bs3 = new BujurSangkar(6, 8, 10);
bs3.hitungLuas();
bs3.hitungKeliling();
PersegiPanjang pp = new PersegiPanjang();
pp.hitungLuas();
pp.hitungKeliling();
PersegiPanjang pp1 = new PersegiPanjang(7);
pp1.hitungLuas();
pp1.hitungKeliling();
PersegiPanjang pp2 = new PersegiPanjang(4, 5);
pp2.hitungLuas();
pp2.hitungKeliling();
}
}
Hasil