BAB 11 Pewarisan, Polimorfisme, dan Interface - JENI Intro1 Bab11 Pewarisan, Polimorfisme, dan Interface

J.E.N.I .

BAB 1 1
Pe w a r isa n , Polim or fism e , da n I n t e r fa ce
1 1 .1 Tu j u a n
Dalam bagian ini, kit a akan m em bicarakan bagaim ana suat u class dapat m ewariskan sifat
dari class yang sudah ada. Class ini dinam akan subclass dan induk class dinam akan
superclass. Kit a j uga akan m em bicarakan sifat khusus dari Java dim ana kit a dapat secara
ot om at is m em akai m et hod yand t epat unt uk set iap obj ect t anpa m em perhat ikan asal dari
subclass obj ect . Sifat ini dinam akan polim orfism e. Pada akhirnya, kit a akan m endiskusikan
t ent ang int erface yang m em bant u m engurangi penulisan program .
Pada akhir pem belaj aran ini, siswa harus m am pu unt uk:


Mendefinisikan superclasses dan subclasses



Override m et hod dari superclasses




Mem buat m et hod final dan class final

1 1 .2 Pe w a r isa n
Dalam Java, sem ua class, t erm asuk class yang m em bangun Java API , adalah subclasses
dari superclass Obj ect . Cont oh hirarki class diperlihat kan di bawah ini.
Beberapa class di at as class ut am a dalam hirarki class dikenal sebagai superclass.
Sem ent ara beberapa class di bawah class pokok dalam hirarki class dikenal sebagai
subclass dari class t ersebut .

Gambar 1: Hirarki class

Pewarisan adalah keunt ungan besar dalam pem rogram an berbasis obj ect karena suat u
sifat at au m et hod didefinisikan dalam superclass, sifat ini secara ot om at is diw ariskan dari
sem ua subclasses. Jadi, Anda dapat m enuliskan kode m et hod hanya sekali dan m ereka
Pengenalan Pem rogram an 1

1

J.E.N.I .


dapat digunakan oleh sem ua subclass. Subclass hanya but uh m engim plem ent asikan
perbedaannya sendiri dan induknya.

1 1 .2 .1

M e n de fin isik a n Su pe r cla ss da n Su bcla ss

Unt uk m em peroleh suat u class, kit a m enggunakan kat a kunci e x t e n d. Unt uk
m engilust rasikan ini, kit a akan m em buat cont oh class induk. Dim isalkan kit a m em punyai
class induk yang dinam akan Person.
public class Person
{
protected String
protected String

name;
address;

/**

* Default constructor
*/
public Person(){
System.out.println(“Inside Person:Constructor”);
name = "";
address = "";
}
/**
* Constructor dengan dua parameter
*/
public Person( String name, String address ){
this.name = name;
this.address = address;
}
/**
* Method accessor
*/
public String getName(){
return name;
}

public String getAddress(){
return address;
}
public void setName( String name ){
this.name = name;
}
public void setAddress( String add ){
this.address = add;
}
}

Pengenalan Pem rogram an 1

2

J.E.N.I .

Perhat ikan bahwa at ribut nam e dan address dideklarasikan sebagai pr ot e ct e d. Alasannya
kit a m elakukan ini yait u, kit a inginkan at ribut - at ribut ini unt uk bisa diakses oleh subclasses
dari superclassess. Jika kit a m endeklarasikan sebagai privat e, subclasses t idak dapat

m enggunakannya. Cat at an bahwa sem ua propert i dari superclass yang dideklarasikan
sebagai pu blic, pr ot e ct e d da n de fa u lt dapat diakses oleh subclasses- nya.
Sekarang, kit a ingin m em buat class lain bernam a St udent . Karena St udent j uga sebagai
Person, kit a put uskan hanya m eng- ext end class Person, sehingga kit a dapat m ewariskan
sem ua propert i dan m et hod dari set iap class Person yang ada. Unt uk m elakukan ini, kit a
t ulis,
public class Student extends Person
{
public Student(){
System.out.println(“Inside Student:Constructor”);
//beberapa kode di sini
}
// beberapa kode di sini
}
Ket ika obj ect St udent di- inst ant iat e, default const ruct or dari superclass secara m ut lak
m em int a unt uk m elakukan inisialisasi yang seharusnya. Set elah it u, pernyat aan di dalam
subclass dieksekusi. Unt uk m engilust rasikannya, perhat ikan kode berikut ,
public static void main( String[] args ){
Student anna = new Student();
}

Dalam kode ini, kit a m em buat sebuah obj ect dari class St udent . Keluaran dari program
adalah,
Inside Person:Constructor
Inside Student:Constructor

Pengenalan Pem rogram an 1

3

Gambar 2: Alur Program

J.E.N.I .

Alur program dit unj ukkan sebagai berikut .

1 1 .2 .2

Ka t a Ku n ci Su pe r

Subclass j uga dapat m em anggil const ruct or secara explicit dari superclass t erdekat . Hal ini

dilakukan dengan pem anggil const rukt or su pe r . Pem anggil const ruct or super dalam
const ruct or dari subclass akan m enghasilkan eksekusi dari superclass const ruct or yang
bersangkut an, berdasar dari argum en sebelum nya.
Sebagai cont oh, pada cont oh class sebelum nya. Person dan St udent , kit a t unj ukkan cont oh
dari pem anggil const ruct or super. Diberikan kode berikut unt uk St udent ,
public Student(){
super( "SomeName", "SomeAddress" );
System.out.println("Inside Student:Constructor");
}
Kode ini m em anggil const ruct or kedua dari superclass t erdekat ( yait u adalah Person) dan
m engeksekusinya. Cont oh kode lain dit unj ukkan sebagai berikut ,
public Student(){
super();
System.out.println("Inside Student:Constructor");
}

Pengenalan Pem rogram an 1

4


J.E.N.I .

Kode ini m em anggil default
m engeksekusinya.

const ruct or dari superclass t erdekat ( yait u Person)

dan

Ada beberapa hal yang harus diingat ket ika m enggunakan pem anggil konst ukt or super:
1. Pem anggil super( ) HARUS DI JADI KAN PERNYATAAN PERTAMA DALAM const ruct or.
2. Pem anggil super( ) hanya dapat digunakan dalam definisi const ruct or.
3. Term asuk const ruct or t his( ) dan pem anggil super( ) TI DAK BOLEH TERJADI DALAM
const ruct or YANG SAMA.
Pem akaian lain dari super adalah unt uk m enunj uk anggot a dari superclass( sepert i referensi
t h is) . Sebagai cont oh,
public Student()
{
super.name = “somename”;
super.address = “some address”;

}

1 1 .2 .3

Ove r r idin g M e t h od

Unt uk beberapa pert im bangan, kadang- kadang class asal perlu m em punyai im plem ent asi
berbeda dari m et hod yang khusus dari superclass t ersebut . Oleh karena it ulah, m et hod
overriding digunakan. Subclass dapat m engesam pingkan m et hod yang didefinisikan dalam
superclass dengan m enyediakan im plem ent asi baru dari m et hod t ersebut .
Misalnya kit a m em punyai im plem ent asi berikut unt uk m et hod get Nam e dalam superclass
Person,
public class Person
{
:
:
public String getName(){
System.out.println("Parent: getName");
return name;
}

:
}
Unt uk override, m et hod get Nam e dalam subclass St udent , kit a t ulis,
public class Student extends Person
{
:
:
public String getName(){
System.out.println("Student: getName");
return name;
}
Pengenalan Pem rogram an 1

5

J.E.N.I .

:
}
Jadi, ket ika kit a m em int a m et hod get Nam e dari obj ect class St udent , m et hod overridde

akan dipanggil, keluarannya akan m enj adi,
Student: getName

1 1 .2 .4

M e t h od fin a l da n cla ss fin a l

Dalam Java, j uga m em ungkinkan unt uk m endeklarasikan class- class yang t idak lam a
m enj adi subclass. Class ini dinam akan cla ss fina l. Unt uk m endeklarasikan class unt uk
m enj adi final kit a hanya m enam bahkan kat a kunci fina l dalam deklarasi class. Unt uk
cont ohnya, j ika kit a ingin class Person unt uk dideklarasikan final, kit a t ulis,
public final class Person
{
//area kode
}
Beberapa class dalam Java API dideklarasikan secara final unt uk m em ast ikan sifat nya t idak
dapat di- override. Cont oh- cont oh dari class ini adalah I nt eger, Double, dan St ring.
I ni m em ungkinkan dalam Java m em buat m et hod yang t idak dapat di- override. Met hod ini
dapat kit a panggil m e t h od fina l. Unt uk m endeklarasikan m et hod unt uk m enj adi final, kit a
t am bahkan kat a kunci final ke dalam deklarasi m et hod. Cont ohnya, j ika kit a ingin m et hod
get Nam e dalam class Person unt uk dideklarasikan final, kit a t ulis,
public final String getName(){
return name;
}
Met hod st at ic j uga secara ot om at is final. I ni art inya Anda t idak dapat m em buat nya
override.

Pengenalan Pem rogram an 1

6

J.E.N.I .

1 1 .3

Polim or fism e

Sekarang, class induk Person dan subclass St udent dari cont oh sebelum nya,
t am bahkan subclass lain dari Person yait u Em ployee. Di bawah ini adalah hierarkinya,

kit a

Per son

St udent

Em ploy ee

Gambar 3: Hirarki dari class induk Person

Dalam Java, kit a dapat m em buat referensi yang m erupakan t ipe dari superclass ke sebuah
obj ect dari subclass t ersebut . Sebagai cont ohnya,
public static main( String[] args )
{
Person
ref;
Student
Employee

studentObject = new Student();
employeeObject = new Employee();

ref = studentObject; //Person menunjuk kepada
// object Student
//beberapa kode di sini
}
Sekarang dim isalkan kit a punya m et hod get Nam e dalam superclass Person kit a, dan kit a
override m et hod ini dalam kedua subclasses St udent dan Em ployee,
public class Person
{
public String getName(){
System.out.println(“Person Name:” + name);
return name;
}
}
public class Student extends Person
{
public String getName(){
System.out.println(“Student Name:” + name);
return name;
}
}
Pengenalan Pem rogram an 1

7

J.E.N.I .

public class Employee extends Person
{
public String getName(){
System.out.println(“Employee Name:” + name);
return name;
}
Kem bali ke m et hod ut am a kit a, ket ika kit a m encoba m em anggil m et hod get Nam e dari
referensi Person ref, m et hod get Nam e dari obj ect St udent akan dipanggil. Sekarang, j ika
kit a berikan ref ke obj ect Em ployee, m et hod get Nam e dari Em ployee akan dipanggil.
public static main( String[] args )
{
Person
ref;
Student
Employee

studentObject = new Student();
employeeObject = new Employee();

ref = studentObject; //Person menunjuk kepada
// object Student
String temp = ref.getName(); //getName dari Student
//class dipanggil
System.out.println( temp );
ref = employeeObject; //Person menunjuk kepada
// object Employee
String temp = ref.getName(); //getName dari Employee
//class dipanggil
System.out.println( temp );
}
Kem am puan dari referensi unt uk m engubah sifat m enurut obj ect apa yang dij adikan acuan
dinam akan polim orfism e. Polim orfism e m enyediakan m ult iobj ect dari subclasses yang
berbeda unt uk diperlakukan sebagai obj ect dari superclass t unggal, secara ot om at is
m enunj uk m et hod yang t epat unt uk m enggunakannya ke part icular obj ect berdasar
subclass yang t erm asuk di dalam nya.
Cont oh lain yang m enunj ukkan propert i polim orfism e adalah ket ika kit a m encoba m elalui
referensi ke m et hod. Misalkan kit a punya m et hod st at is pr in t I n for m a t ion yang
m engakibat kan obj ect Person sebagai referensi, kit a dapat m e- referensi dari t ipe Em ployee
dan t ipe St udent ke m et hod ini selam a it u m asih subclass dari class Person.
public static main( String[] args )
{
Student
studentObject = new Student();
Employee
employeeObject = new Employee();
printInformation( studentObject );
printInformation( employeeObject );
}
Pengenalan Pem rogram an 1

8

J.E.N.I .

public static printInformation( Person p ){
. . . .
}

1 1 .4

Abst r a ct Cla ss

Misalnya kit a ingin m em buat superclass yang m em punyai m et hod t ert ent u yang berisi
im plem ent asi, dan j uga beberapa m et hod yang akan di- overridden oleh subclasses nya.
Sebagai cont oh, kit a akan m em buat superclass bernam a LivingThing. class ini m em punyai
m et hod t ert ent u sepert i breat h, eat , sleep, dan walk. Akan t et api, ada beberapa m et hod di
dalam superclass yang sifat nya t idak dapat digeneralisasi. Kit a am bil cont oh, m et hod walk.
Tidak sem ua kehidupan berj alan( walk) dalam cara yang sam a. Am bil m anusia sebagai
m isal, kit a m anusia berj alan dengan dua kaki, dim ana kehidupan lainnya sepert i anj ing
berj alan dengan em pat kaki. Akan t et api, beberapa ciri um um dalam kehidupan sudah
biasa, it ulah kenapa kit a inginkan m em buat superclass um um dalam hal ini.

Gambar 4: class abstract

Kit a dapat m em buat superclass yang m em punyai beberapa m et hod dengan im plem ent asi
sedangkan yang lain t idak. Class j enis ini yang disebut dengan class abst ract .
Sebuah cla ss a bst r a ct adalah class yang t idak dapat di- inst ant iat e. Seringkali m uncul di
at as hirarki class pem rogram an berbasis obj ect , dan m endefinisikan keseluruhan aksi yang
m ungkin pada obj ect dari seluruh subclasses dalam class.
Met hod ini dalam class abst ract yang t idak m em punyai im plem ent asi dinam akan m et hod
abst ract . Unt uk m em buat m et hod abst ract , t inggal m enulis deklarasi m et hod t anpa t ubuh
class dan digunakan m enggunakan kat a kunci abst ract . Cont ohnya,
public abstract void someMethod();

Pengenalan Pem rogram an 1

9

J.E.N.I .

Sekarang m ari m em buat cont oh class abst ract .
public abstract class LivingThing
{
public void breath(){
System.out.println("Living Thing breathing...");
}
public void eat(){
System.out.println("Living Thing eating...");
}
/**
* abstract method walk
* Kita ingin method ini di-overridden oleh subclasses
*/
public abstract void walk();
}
Ket ika class m eng- ext end class abst ract LivingThing, dibut uhkan unt uk override m et hod
abst ract walk( ) , at au lainnya, j uga subclass akan m enj adi class abst ract , oleh karena it u
t idak dapat di- inst ant iat e. Cont ohnya,
public class Human extends LivingThing
{
public void walk(){
System.out.println("Human walks...");
}
}
Jika class Hum an t idak dapat overridde m et hod walk, kit a akan m enem ui pesan error
berikut ini,
Human.java:1: Human is not abstract and does not override
abstract method walk() in LivingThing
public class Human extends LivingThing
^
1 error

Pe t u n j u k pe n u lisa n pr ogr a m :
Gunakan class abst ract unt uk m endefinisikan secara luas sifat - sifat dari class
t ert inggi pada hirarki pem rogram an berbasis obj ect , dan gunakan subclassesnya
unt uk m enyediakan rincian dari class abst ract .

Pengenalan Pem rogram an 1

10

J.E.N.I .

1 1 .5

I n t e r fa ce

I n t e r fa ce adalah j enis khusus dari blok yang hanya berisi m et hod signat ure( at au const ant
) . I nt erface m endefinisikan sebuah( signat ure) dari sebuah kum pulan m et hod t anpa t ubuh.
I nt erface m endefinisikan sebuah cara st andar dan um um dalam m enet apkan sifat - sifat dari
class- class. Mereka m enyediakan class- class, t anpa m em perhat ikan lokasinya dalam hirarki
class, unt uk m engim plem ent asikan sifat - sifat yang um um . Dengan cat at an bahwa
int erface- int erface j uga m enunj ukkan polim orfism e, dikarenakan program dapat m em anggil
m et hod int erface dan versi yang t epat dari m et hod yang akan dieksekusi t ergant ung dari
t ipe obj ect yang m elewat i pem anggil m et hod int erface.

1 1 .5 .1

Ke n a pa Kit a M e m a k a i I n t e r fa ce ?

Kit a akan m enggunakan int erface j ika kit a ingin class yang t idak berhubungan
m engim plem ent asikan m et hod yang sam a. Melalui int erface- int erface, kit a dapat
m enangkap kem iripan diant ara class yang t idak berhubungan t anpa m em buat nya seolaholah class yang berhubungan.
Mari kit a am bil cont oh class Lin e dim ana berisi m et hod yang m enghit ung panj ang dari
garis dan m em bandingkan obj ect Lin e ke obj ect dari class yang sam a. Sekarang, m isalkan
kit a punya class yang lain yait u M yI n t e ge r dim ana berisi m et hod yang m em bandingkan
obj ect M yI n t e ge r ke obj ect dari class yang sam a. Sepert i yang kit a lihat disini, kedua
class- class m em punyai m et hod yang m irip dim ana m em bandingkan m ereka dari obj ect lain
dalam t ipe yang sam a, t et api m ereka t idak berhubungan sam a sekali. Supaya dapat
m enj alankan cara unt uk m em ast ikan bahwa dua class- class ini m engim plem ent asikan
beberapa m et hod dengan t anda yang sam a, kit a dapat m enggunakan sebuah int erface
unt uk hal ini. Kit a dapat m em buat sebuah class int erface, kat akanlah int erface Re la t ion
dim ana m em punyai deklarasi m et hod pem banding. Relasi int erface dapat dideklarasikan
sebagai,
public interface Relation
{
public boolean isGreater( Object a, Object b);
public boolean isLess( Object a, Object b);
public boolean isEqual( Object a, Object b);
}
Alasan lain dalam m enggunakan int erface pem rogram an obj ect adalah unt uk m enyat akan
sebuah int erface pem rogram an obj ect t anpa m enyat akan classnya. Sepert i yang dapat kit a
lihat nant i dalam bagian I nt erface vs class, kit a dapat benar- benar m enggunakan int erface
sebagai t ipe dat a.
Pada akhirnya, kit a perlu m enggunakan int erface unt uk pewarisan m odel j am ak dim ana
m enyediakan class unt uk m em punyai lebih dari sat u superclass. Pewarisan j am ak t idak
dit unj ukkan di Java, t et api dit unj ukkan di bahasa berorient asi obj ect lain sepert i C+ + .

Pengenalan Pem rogram an 1

11

J.E.N.I .

1 1 .5 .2

I n t e r fa ce vs. Cla ss Abst r a ct

Berikut ini adalah perbedaan ut am a ant ara sebuah int erface dan sebuah class abst ract :
m et hod int erface t idak punya t ubuh, sebuah int erface hanya dapat m endefinisikan
konst ant a dan int erface t idak langsung m ewariskan hubungan dengan class ist im ewa
lainnya, m ereka didefinisikan secara independent .

1 1 .5 .3

I n t e r fa ce vs. Cla ss

Sat u ciri um um dari sebuah int erface dan class adalah pada t ipe m ereka berdua. I ni art inya
bahwa sebuah int erface dapat digunakan dalam t em pat - t em pat dim ana sebuah class dapat
digunakan. Sebagai cont oh, diberikan class Person dan int erface PersonI nt erface, berikut
deklarasi yang benar:
PersonInterface
Person

pi = new Person();
pc = new Person();

Bagaim anapun, Anda t idak dapat m em buat inst ance dari sebuah int erface.
Cont ohnya:
PersonInterface

pi = new PersonInterface(); //COMPILE
//ERROR!!!
Ciri um um lain adalah baik int erface m aupun class dapat m endefinisikan m et hod.
Bagaim anapun, sebuah int erface t idak punya sebuah kode im plem ent asi sedangkan class
m em iliki salah sat unya.

1 1 .5 .4

M e m bu a t I n t e r fa ce

Unt uk m em buat int erface, kit a t ulis,
public interface [InterfaceName]
{
//beberapa method tanpa isi
}
Sebagai cont oh, m ari kit a m em buat sebuah int erface yang m endefinisikan hubungan ant ara
dua obj ect m enurut urut an asli dari obj ect .
public interface Relation
{
public boolean isGreater( Object a, Object b);
public boolean isLess( Object a, Object b);
public boolean isEqual( Object a, Object b);
}

Pengenalan Pem rogram an 1

12

J.E.N.I .

Sekarang, penggunaan int erface, kit a gunakan kat a kunci im ple m e n t s. Cont ohnya,
/**
* Class ini mendefinisikan segmen garis
*/
public class Line implements Relation
{
private double x1;
private double x2;
private double y1;
private double y2;
public Line(double x1, double x2, double y1, double y2){
this.x1 = x1;
this.x2 = x2;
this.y1 = y1;
this.y2 = y2;
}
public double getLength(){
double length = Math.sqrt((x2-x1)*(x2-x1) +
(y2-y1)* (y2-y1));
return length;
}
public boolean isGreater( Object a, Object b){
double aLen = ((Line)a).getLength();
double bLen = ((Line)b).getLength();
return (aLen > bLen);
}
public boolean isLess( Object a, Object b){
double aLen = ((Line)a).getLength();
double bLen = ((Line)b).getLength();
return (aLen < bLen);
}
public boolean isEqual( Object a, Object b){
double aLen = ((Line)a).getLength();
double bLen = ((Line)b).getLength();
return (aLen == bLen);
}
}

Pengenalan Pem rogram an 1

13

J.E.N.I .

Ket ika class Anda m encoba m engim plem ent asikan sebuah int erface, selalu past ikan bahwa
Anda m engim plem ent asikan sem ua m et hod dari int erface, j ika t idak, Anda akan
m enem ukan kesalahan ini,
Line.java:4: Line is not abstract and does not override abstract
method
isGreater(java.lang.Object,java.lang.Object) in
Relation
public class Line implements Relation
^
1 error

Pe t u n j u k pe n u lisa n pr ogr a m :
Gunakan int erface unt uk m endefinisikan m et hod st andar yang sam a dalam classclass berbeda yang m em ungkinkan. Sekali Anda t elah m em buat kum pulan definisi
m et hod st andar, Anda dapat m enulis m et hod t unggal unt uk m em anipulasi sem ua classclass yang m engim plem ent asikan int erface.

1 1 .5 .5

H u bu n ga n da r i I n t e r fa ce k e Cla ss

Sepert i yang t elah kit a lihat dalam bagian sebelum nya, class dapat m engim plem ent asikan
sebuah int erface selam a kode im plem ent asi unt uk sem ua m et hod yang didefinisikan dalam
int erface t ersedia.
Hal lain yang perlu dicat at t ent ang hubungan ant ara int erface ke class- class yait u, class
hanya dapat m engEXTEND SATU superclass, t et api dapat m engI MPLEMENTASI kan BANYAK
int erface. Sebuah cont oh dari sebuah class yang m engim plem ent asikan int erface adalah,
public class Person implements PersonInterface,
LivingThing,
WhateverInterface {
//beberapa kode di sini
}
Cont oh lain dari class yang m eng- ext end sat u superclass dan m engim plem ent asikan
sebuah int erface adalah,
public class ComputerScienceStudent extends Student
implements PersonInterface,
LivingThing {
//beberapa kode di sini
}
Cat at an bahwa sebuah int erface bukan bagian dari hirarki pewarisan class. Class yang t idak
berhubungan dapat m engim plem ent asikan int erface yang sam a.

Pengenalan Pem rogram an 1

14

J.E.N.I .

1 1 .5 .6

Pe w a r isa n An t a r I n t e r fa ce

I nt erface bukan bagian dari hirarki class. Bagaim anapun, int erface dapat m em punyai
hubungan pewarisan ant ara m ereka sendiri. Cont ohnya, m isal kit a punya dua int erface
St u de n t I n t e r fa ce
dan
Pe r sonI nt e r fa ce .
Jika
St udent I nt erface
m eng- ext end
PersonI nt erface, m aka ia akan m ewariskan sem ua deklarasi m et hod dalam PersonI nt erface.
public interface PersonInterface {
. . .
}
public interface StudentInterface extends PersonInterface {
. . .
}

Pengenalan Pem rogram an 1

15

J.E.N.I .

1 1 .6

La t ih a n

1 1 .6 .1

Ex t e n d St u de n t Re cor d

Dalam lat ihan ini, kit a ingin unt uk m em buat cat at an siswa yang lebih khusus yang berisi
inform asi t am bahan t ent ang penget ahuan kom put er siswa. Tugasnya adalah m eng- ext end
class St udent Record yang m engim plem ent asikan pelaj aran sebelum nya. Cobalah unt uk
m eng- override beberapa m et hod yang ada dalam superclass St udent Record, j ika Anda
benar- benar m em but uhkannya.

1 1 .6 .2

Be n t u k Abst r a ct Cla ss

Cobalah unt uk m em buat class abst ract yang dinam ai Shape dengan m et hod abst ract
get Area( ) dan get Nam e( ) . Tulis dua subclasses- nya yait u Circle dan Square. Anda dapat
m enam bahkan m et hod t am bahan ke dalam subclasses j ika diinginkan.

Pengenalan Pem rogram an 1

16