Gambarkan sketsa hirarki class dari hewan-hewan di atas Menggunakan Class Goose Perlihatkan output dari program tersebut Eksekusi program tersebut, javac FarmExample4.java Apa hasil yang diperoleh, error?

Jurusan Teknik Informatika - Unijoyo 1 6 8 konstruktor class Goose public Goose { super4; panggil constructor induk numberOfEggs = 2; lengkapi peran constructor } public void talk { System.out.printlnHonk; } public int getNumberOfEggs { return numberOfEggs; } public void setNumberOfEggsint n { numberOfEggs = n; } } •

Q. Gambarkan sketsa hirarki class dari hewan-hewan di atas Menggunakan Class Goose

public class FarmExample3 { public static void mainString[] args { Animal[] farm = {new Goose, new Cow, new Pig, new Sheep}; System.out.println“The animals say:”; for int i=0; ifarm.length; i++ farm[i].talk; } } •

Q. Perlihatkan output dari program tersebut

• Class Goose mempunyai suatu atribut tambahan, tetapi tetap sebagai bagian dari Animal, a kind of Animal. Masalah Pada Polymorphism • Perhatikan kode berikut: public class FarmExample4 { public static void mainString[] args { Animal[] farm = {new Goose, new Cow, new Pig, new Sheep}; Diktat - Pemrograman Berorientasi Obyek 2007 1 6 9 for int i=0; ifarm.length; i++ { farm[i].talk; System.out.printlnfarm[i].getNumberOfEggs+ “ eggs”; } } end of main } • Q. Eksekusi program tersebut, javac FarmExample4.java Apa hasil yang diperoleh, error? • Goose, Cow, Pig dan Sheep dapat diperlakukan sebagai jenis dari Animal, tetapi class-class ini tidak mengimplementasikan semua metode yang sama: hanya Goose yang mengimplementasikan metode getNumberOfEggs. Casting Obyek • Barangkali masalah ini dapat diselesaikan dengan meng-cast obyek-obyek di dalam array ke class Goose? public class FarmExample5 { public static void mainString[] args { Animal[] farm = {new Goose, new Cow, new Pig, new Sheep}; for int i=0; ifarm.length; i++ { farm[i].talk; System.out.printlnGoosefarm[i]. getNumberOfEggs+ “ eggs”; } } end of main } • Ini hanya bekerja terhadap elemen pertama array; program gagal dengan suatu run time casting exception. FarmExample5 Honk 2 eggs Moo Exception in thread main java.lang.ClassCastException at FarmExample5.mainFarmExample5.java:6 Jurusan Teknik Informatika - Unijoyo 1 7 0 Operator instanceof • Pada contoh di atas, jika class dari suatu obyek diketahui, maka dapat diketahui pula apakah mungkin memanggil metode getNumberOfEggs. • Ini dapat dilakukan menggunakan operator instanceof: public class FarmExample6 { public static void mainString[] args { Animal[] farm = {new Goose, new Cow, new Pig, new Sheep}; for int i=0; ifarm.length; i++ { farm[i].talk; if farm[i] instanceof Goose System.out.printlnGoosefarm[i]. getNumberOfEggs+ “ eggs”; } } end of main } • Output dari kode di atas adalah Honk 2 eggs Moo Grunt Baa •

Q. Saat mencapai pernyataan println, diketahui bahwa