//PROGRAM 7-9 A() { System.out.println("Constructor dari kelas A"); B() { System.out.println("Constructor dari kelas B"); class C extends B { C() { System.out.println("Constructor dari kelas C"); class DemoConstructorPenurunan { System.out.println( "Pada saat membentuk objek dari kelas A:"); A obj1 = new A(); System.out.println( "\npada saat membentuk objek dari kelas B:"); B obj2 = new B(); System.out.println( "\npada saat membentuk objek dari kelas C:"); C obj3 = new C(); //PROGRAM 7-15 // Mendefinisikan kelas abstract abstract // method abstrak, tidak memiliki kode implementasi abstract public void coba(); // kelas abstrak masing diizinkan untuk mendefinisikan // method non-abstrak public void cobajuga() { System.out.println("Method non-abstrak " + "di dalam kelas abstrak"); // override method coba() public void coba() { System.out.println("Method di dalam kelas B"); class DemoKelasAbstrak1 { A ref; // mendeklarasikan referensi ke kelas A B obj = new B(); ref = obj; // ref menunjuk ke objek dari kelas B ref.coba(); // memanggil method coba() di dalam B ref.cobajuga(); // memanggil method cobajuga() di dalam A
return (sisi * sisi); //PROGRAM 7-16 // Mendefinisikan kelas abstract abstract class Bentuk { // method abstrak, tidak memiliki kode implementasi abstract public double luas(); class PersegiPanjang extends Bentuk { private double panjang; private double lebar; PersegiPanjang(int p, int l) { panjang = p; lebar = l; System.out.println("Dalam objek persegi panjang:"); return (panjang * lebar); class BujurSangkar extends Bentuk { private double sisi; BujurSangkar(int s) { sisi = s; System.out.println("Dalam objek bujursangkar:"); class Segitiga extends Bentuk { private double alas; private double tinggi; Segitiga(int a, int t) { alas = a; tinggi = t; System.out.println("Dalam objek segitiga:"); return ((alas * tinggi)/2); class Lingkaran extends Bentuk { private double jarijari; private final double PI = 3.1416; Lingkaran(int r) { jarijari = r; System.out.println("Dalam objek lingkaran:"); return (PI * jarijari * jarijari); class DemoKelasAbstrak2 {
Bentuk obj; // Baris kode di bawah ini SALAH, // karena kelas abstrak tidak dapat diinstansiasi //obj = new Bentuk(); // SALAH PersegiPanjang pp = new PersegiPanjang(5, 3); BujurSangkar bs = new BujurSangkar(4); Segitiga st = new Segitiga(4, 3); Lingkaran lk = new Lingkaran(2); // obj mengacu pada objek PersegiPanjang obj = pp; PersegiPanjang // obj mengacu pada objek BujurSangkar obj = bs; BujurSangkar // obj mengacu pada objek Segitiga obj = st; Segitiga // obj mengacu pada objek Lingkaran obj = lk; Lingkaran //PROGRAM 7-1 public void seta(int nilai) { a = nilai; public int geta() { return a; // membuat kelas turunan (subclass) dari kelas A private int b; public void setb(int nilai) { b = nilai; public int getb() { return b; class DemoKelasTurunan1 {
// melakukan instansiasi terhadap kelas B return b; B obj = new B(); // mengeset nilai objek dari kelas B obj.seta(100); obj.setb(200); // mendapatkan nilai yang terdapat dalam objek dari kelas B System.out.println("Nilai a : " + obj.geta()); System.out.println("Nilai b : " + obj.getb()); //PROGRAM 7-2 public void seta(int nilai) { a = nilai; public int geta() { return a; // membuat kelas turunan (subclass) dari kelas A private int b; public void setb(int nilai) { b = nilai; public int getb() { // membuat kelas turunan (subclass) dari kelas B class C extends B { private int c; public void setc(int nilai) { c = nilai; public int getc() { return c; class DemoKelasTurunan2 { // melakukan instansiasi terhadap kelas C C obj = new C(); // mengeset nilai dari kelas C obj.seta(100); obj.setb(200); obj.setc(300); // mendapatkan nilai yang terdapat dalam kelas C System.out.println("Nilai a : " + obj.geta()); System.out.println("Nilai b : " + obj.getb()); System.out.println("Nilai c : " + obj.getc()); //PROGRAM 7-12
class Induk { // mendefinisikan method test() tanpa parameter public void test() { System.out.println("Method di dalam kelas Induk"); class Turunan extends Induk { // melakukan overload terhadap method test(), bukan override. public void test(string s) { System.out.println("Method di dalam kelas Turunan"); System.out.println("s : \"" + s + "\""); class DemoOverloadTurunan { Turunan obj = new Turunan(); // memanggil method test() yang terdapat pada kelas Induk obj.test(); // memanggil method test() yang terdapat pada kelas Turunan obj.test("contoh overload pada proses pewarisan"); //PROGRAM 7-10 public void seta(int nilai) { a = nilai; public int geta() { return a; public void tampilkannilai() { System.out.println("Nilai a: " + geta()); private int b; public void setb(int nilai) { b = nilai; public int getb() { return b; // melakukan override terhadap method tampilkannilai() // yang terdapat pada kelas A public void tampilkannilai() { System.out.println("Nilai b: " + getb()); class DemoOverride1 {
B obj = new B(); obj.seta(100); obj.setb(200); kelas B obj.tampilkannilai(); //PROGRAM 7-11 public void seta(int nilai) { a = nilai; public int geta() { return a; public void tampilkannilai() { System.out.println("Nilai a: " + geta()); // melakukan override terhadap method tampilkannilai() // yang terdapat pada kelas A public void tampilkannilai() { super.tampilkannilai(); // memanggil method dalam kelas A System.out.println("Nilai b: " + getb()); class DemoOverride2 { B obj = new B(); obj.seta(100); obj.setb(200); kelas B obj.tampilkannilai(); private int b; public void setb(int nilai) { b = nilai; public int getb() { return b; //PROGRAM 7-13 // Mendefinisikan kelas induk class Penyanyi { public void bernyanyi() { System.out.println("Karakteristik nadanya " + "belum didefinisikan"); // Mendefinisikan kelas-kelas turunan dari kelas Penyanyi
class PenyanyiJazz extends Penyanyi { // melakukan override terhadap method bernyanyi() public void bernyanyi() { System.out.println("Bernyanyi dengan irama Jazz"); class PenyanyiPop extends Penyanyi { // melakukan override terhadap method bernyanyi() public void bernyanyi() { System.out.println("Bernyanyi dengan irama Pop"); class PenyanyiDangdut extends Penyanyi { // melakukan override terhadap method bernyanyi() public void bernyanyi() { System.out.println("Bernyanyi dengan irama Dangdut"); class DemoPolimorfisme1 { Penyanyi p; PenyanyiJazz musmujiono = new PenyanyiJazz(); PenyanyiPop audi = new PenyanyiPop(); PenyanyiDangdut inul = new PenyanyiDangdut(); p = musmujiono; // p mengacu pada objek PenyanyiJazz // akan memanggil method pada kelas PenyanyiJazz p.bernyanyi(); p = audi; // p mengacu pada objek PenyanyiPop // akan memanggil method pada kelas PenyanyiPop p.bernyanyi(); p = inul; // p mengacu pada objek PenyanyiDangdut // akan memanggil method pada kelas PenyanyiDangdut p.bernyanyi(); //PROGRAM 7-14 // Mendefinisikan kelas induk class Bentuk { System.out.println("Tidak didefinisikan"); return 0; class PersegiPanjang extends Bentuk { private double panjang; private double lebar; PersegiPanjang(int p, int l) { panjang = p; lebar = l;
System.out.println("Dalam objek persegi panjang:"); return (panjang * lebar); class BujurSangkar extends Bentuk { private double sisi; BujurSangkar(int s) { sisi = s; System.out.println("Dalam objek bujursangkar:"); return (sisi * sisi); class Segitiga extends Bentuk { private double alas; private double tinggi; Segitiga(int a, int t) { alas = a; tinggi = t; System.out.println("Dalam objek segitiga:"); return ((alas * tinggi)/2); class Lingkaran extends Bentuk { private double jarijari; private final double PI = 3.1416; Lingkaran(int r) { jarijari = r; System.out.println("Dalam objek lingkaran:"); return (PI * jarijari * jarijari); class DemoPolimorfisme2 { Bentuk obj; PersegiPanjang pp = new PersegiPanjang(5, 3); BujurSangkar bs = new BujurSangkar(4); Segitiga st = new Segitiga(4, 3); Lingkaran lk = new Lingkaran(2); // obj mengacu pada objek PersegiPanjang obj = pp; PersegiPanjang // obj mengacu pada objek PersegiPanjang obj = bs; BujurSangkar
// obj mengacu pada objek PersegiPanjang obj = st; Segitiga // obj mengacu pada objek PersegiPanjang obj = lk; Lingkaran //PROGRAM 7-3 // hanya dikenali oleh kelas A // hanya dapat dikenali oleh kelas A dan turunan-turunannya protected void seta(int nilai) { a = nilai; // hanya dapat dikenali oleh kelas A dan turunan-turunannya protected int geta() { return a; private int b; // constructor kelas B B(int nilaia, int nilaib) { //a = nilaia; // SALAH, karena a tidak dikenali di sini seta(nilaia); // menggunakan method seta() b = nilaib; public void showdata() { // menggunakan method geta() System.out.println("Nilai a : " + geta()); System.out.println("Nilai b : " + b); class C { private int c; public void setc(int nilai) { //seta(10); // SALAH, seta() tidak dikenal di sini c = nilai; public int getc() { return c; public void showc() { //System.out.println("Nilai a : " + geta()); // SALAH System.out.println("Nilai c : " + c);
class DemoProtected1 { KotakPejal(int p, int l, int t, int b) { // melakukan instansiasi terhadap kelas B B obj = new B(40, 50); obj.showdata(); obj.seta(100); System.out.println("Nilai a : " + obj.geta()); panjang = p; panjang lebar = l; lebar tinggi = t; tinggi berat = b; // menggunakan data // menggunakan data // menggunakan data //PROGRAM 7-4 class Kotak { public double getberat() { return berat; protected double panjang; protected double lebar; protected double tinggi; //default constructor Kotak() { panjang = lebar = tinggi = 0; Kotak(int p, int l, int t) { panjang = p; lebar = l; tinggi = t; class DemoProtected2 { // melakukan instansiasi terhadap kelas turunan KotakPejal k = new KotakPejal(4, 3, 2, 1); System.out.println("Volume k\t : " + k.hitungvolume()); System.out.println("Berat k\t : " + k.getberat()); public double hitungvolume() { return (panjang * lebar * tinggi); //PROGRAM 7-5 class Kotak { protected double panjang; class KotakPejal extends Kotak { private double berat; protected double lebar; protected double tinggi; //default constructor
Kotak() { System.out.println("Berat k : " + k.getberat()); panjang = lebar = tinggi = 0; Kotak(int p, int l, int t) { panjang = p; lebar = l; tinggi = t; //PROGRAM 7-6 class Kotak { protected double panjang; public double hitungvolume() { return (panjang * lebar * tinggi); protected double lebar; protected double tinggi; Kotak() { panjang = lebar = tinggi = 0; class KotakPejal extends Kotak { private double berat; KotakPejal(int p, int l, int t, int b) { super(p, l, t); // memanggil constructor kelas Kotak berat = b; public double getberat() { return berat; class DemoSuper1 { // melakukan instansiasi terhadap kelas turunan KotakPejal k = new KotakPejal(6, 5, 4, 2); System.out.println("Volume k : " + k.hitungvolume()); Kotak(Kotak k) { this.panjang = k.panjang; this.lebar = k.lebar; this.tinggi = k.tinggi; Kotak(int p, int l, int t) { panjang = p; lebar = l; tinggi = t; public double hitungvolume() { return (panjang * lebar * tinggi); class KotakPejal extends Kotak { private double berat; KotakPejal(KotakPejal kp) {
super(kp); // melewatkan objek ke dalam super() this.berat = kp.berat; KotakPejal(int p, int l, int t, int b) { super(p, l, t); berat = b; public double getberat() { return berat; class DemoSuper2 { KotakPejal k1, k2, k3; //PROGRAM 7-7 protected int a; yang ada dalam kelas A // constructor B(int nilai1, int nilai2) { super.a = nilai1; kelas A a = nilai2; kelas B // akan menimpa a // a di dalam // a di dalam k1 = new KotakPejal(4, 3, 2, 1); k2 = new KotakPejal(6, 5, 4, 2); k3 = new KotakPejal(k1); // melewatkan objek k1 System.out.println("Volume k1\t : " + k1.hitungvolume()); System.out.println("Berat k1\t : " + k1.getberat()); System.out.println("\nVolume k2\t : " + k2.hitungvolume()); System.out.println("Berat k2\t : " + k2.getberat()); System.out.println("\nVolume k3\t : " + k3.hitungvolume()); System.out.println("Berat k3\t : " + k3.getberat()); public void tampilkannilai() { System.out.println("Nilai a di dalam kelas A : " + super.a); System.out.println("Nilai a di dalam kelas B : " + a); class DemoSuper3 { B obj = new B(121, 212); obj.tampilkannilai();
//PROGRAM 7-8 public void seta(int nilai) { a = nilai; public int geta() { private int d; public void setd(int nilai) { d = nilai; public int getd() { return d; return a; class DemoTurunanBertingkat { private int b; public void setb(int nilai) { b = nilai; public int getb() { return b; class C extends B { private int c; public void setc(int nilai) { c = nilai; // membentuk objek dari kelas D D obj = new D(); // mengisi nilai obj.seta(10); obj.setb(20); obj.setc(30); obj.setd(40); // menampilkan nilai System.out.println("Nilai a : " + obj.geta()); System.out.println("Nilai b : " + obj.getb()); System.out.println("Nilai c : " + obj.getc()); System.out.println("Nilai d : " + obj.getd()); public int getc() { return c; class D extends C {