Overloading dan Inheritance Java dan Fungsinya
#include <iostream>
using namespace std;
class Base
{
public:
int f(int i)
{
cout << "f(int): ";
return i+3;
}
};
class Derived : public Base
{
public:
double f(double d)
{
cout << "f(double): ";
return d+3.3;
}
};
int main()
{
Derived* dp = new Derived;
cout << dp->f(3) << '\n';
cout << dp->f(3.3) << '\n';
delete dp;
return 0;
}
f(double): 6.3
f(double): 6.6
f(int): 6
f(double): 6.6
Contoh: Sekarang pertimbangkan hasil yang dikeluarkan menggunakan bahasa pemrograman Java.
class Base
{
public int f(int i)
{System.out.print("f (int): ");
return i+3;}
}
class Derived extends Base
{
public double f(double i)
{System.out.print("f (double) : ");
return i + 3.3;}
}
class myprogram3
{
public static void main(String args[])
{Derived obj = new Derived();
System.out.println(obj.f(3));
System.out.println(obj.f(3.3));}
}
f (double): 6.6
Overloading Java dapat bekerja lintas scope yang berbeda dengan C++. Kompilator Javadapat menentukan versi yang tepat dari method overloading untuk dieksekusi pada saat waktu kompilasi berdasarkan tipe dari argumen yang digunakan untuk memanggil method dan parameter dari method overloading dari kedua class yang diterima nilainya, yang berasal dari argumen yang digunakan dalam pemanggilan dan eksekusi method overloading.
using System;
class Base
{
public int f(int i)
{Console.Write("f (int): ");
return i + 3;}
}
class Derived : Base
{
public double f(double i)
{Console.Write("f (double) : ");
return i+3.3;}
}
class MyProgram
{
static void Main(string[] args)
{
Derived obj = new Derived();
Console.WriteLine(obj.f(3));
Console.WriteLine(obj.f(3.3));
Console.ReadKey();
// tulis baris program ini
// jika menggunakan visual
// studio.
}
}
output dari program adalah:
f(double) : 6.3
f(double): 6.6
Ketimbang hasil output yang keluar adalah:
f(int) : 6
f(double) : 6.6
Alasan pada bagian program ini adalah sama seperti pada C++. Seperti halnya C++, tidak terdapat overloading antara Base class dan Derived class. Pada C#, tidak terdapat overloading antar scope, dan derived class bukanlah exception yang menuju ke aturan umum. Hal ini sama seperti C++ karena C# dirancang untuk lebih dekat ke C++.
Dalam hirarki inheritance pada Java, method superclass dan subclass dapat dilakukan overriding dan overloading. Ketika terjadi overloading, maka method superclass dan subclass akan memiliki nama yang sama tetapi dengan signature yang berbeda dari tipe parameternya.
BalasHapusOverloading dan inheritance Java?
BalasHapusOverloading memungkinkan beberapa definisi fungsi untuk nama yang sama, yang dibedakan terutama melalui argumen yang berbeda dan biasanya diselesaikan pada waktu kompilasi program. Inheritance memungkin subclass untuk menentukan versi yang lebih khusus dari fungsi yang sama tersebut dan biasanya diselesaikan pada waktu pemrosesan.
HapusBisa dijelaskan apa yang dimaksud dengan overloading Java?
BalasHapusPada pemrograman Java, terdapat dua atau lebih method yang mungkin untuk memiliki method yang sama jika terdapat perbedaan pada bagian parameternya. Method tersebut disebut dengan method overloading.
Hapus