Saya memiliki objek bertipe ElectronicProduct yang memperluas Produk, saya mencoba memanggil metode loadFromFile() dari dalam kelas anak, memberikan nama dan tipe argumen yang tepat, namun objek kelas anak malah memanggil loadFromFile() dari kelas induk. Bagaimana cara menghentikan ini?
Kodenya adalah sebagai berikut:
ElectronicProduct eProduct = new ElectronicProduct();
eProduct.loadFromFile(eProduct,bin);
namun itu memanggil metode di kelas induk di bawah ini:
public Product loadFromFile(Product aProduct, BufferedReader bin) throws IOException, ParseException{
//some code
}
alih-alih kelas anak yang ditunjukkan di bawah ini:
public ElectronicProduct loadFromFile(Product aProduct, BufferedReader bin) throws IOException, ParseException{
// Some code
}
Saya memang mencoba menggunakan @Override dalam metode kelas anak, tetapi karena yang satu mengembalikan produk dan yang lain mengembalikan produk elektronik, penggantian tersebut sepertinya tidak berhasil. Bantuan apa pun akan sangat dihargai.
Sunting
Ini sangat aneh karena sekarang sudah mulai berfungsi sesuai keinginan saya, tanpa mengubah apa pun. Skenario yang berbeda tetapi hal serupa terjadi sebelumnya yang memberikan peringatan kesalahan, saya menghapus kode dan menulis hal yang persis sama, dan kemudian berfungsi. Saya tidak ingin hal ini terjadi secara acak karena ini adalah tugas yang dinilai. Tidak mau keluar topik tapi harus berkaitan. Mohon sarannya jika ada yang tahu apa yang baru saja terjadi?
EDIT*2
Menanggapi komentar dari Tiffado, alasan objek Produk diteruskan dan bukan objek Produk Elektronik, adalah karena dalam metode kelas anak, objek Produk diteruskan ke kelas induk. Jika saya memasukkan objek kelas anak ke dalam metode anak yang kemudian meneruskan objek tersebut ke metode induk, itu mungkin tidak berfungsi, karena saya telah mengetahui bahwa kelas induk tidak 'melihat' kelas anak. Harap perbaiki saya jika ini salah.
public ElectronicProduct loadFromFile(Product aProduct, BufferedReader bin) throws IOException, ParseException{
ElectronicProduct eProduct = new ElectronicProduct();
eProduct = (ElectronicProduct)super.loadFromFile(aProduct,bin);
eProduct.setGuarunteeDuration(Integer.valueOf(bin.readLine()));
return eProduct;
}