Anda di halaman 1dari 12

More on Classes

1.Encapsulation

Enkapsulasi adalah pembungkus, pembungkus disini dimaksudkan untuk menjaga suatu


proses program agar tidak dapat diakses secara sembarangan atau di intervensi oleh
program lain.Konsep enkapsulasi sangat penting dilakukan untuk menjaga kebutuhan
program agar dapat diakses sewaktu-waktu, sekaligus menjaga program tersebut. Ada 4
konsep inti dalam OOP: enkapsulasi, pewarisan, polimorfisme, dan abstraksi.
Ide dibalik enkapsulasi adalah untuk memastikan bahwa detail implementasi tidak terlihat
oleh pengguna.
Contoh:

class BankAccount {
private double balance=0;
public void deposit(double x) {
if(x > 0) {
balance += x;
}
}
}
enkapsulasi memberikan manfaat sebagai berikut:
- Kontrol cara data diakses atau diubah
- Lebih fleksibel dan mudah diubah kode
- Kemampuan untuk mengubah satu bagian dari kode tanpa mempengaruhi bagian lain

2.1.Inheritance

Class dapat didefinisikan dengan referensi pada class yang lain yang telah terdefinisi.
Inheritance merupakan pewarisan atribut dan method pada sebuah class yang diperoleh dari
class yang telah terdefinisikan tersebut. Class yang diwarisi class yang lain di sebut dengan
subclass, sedangkan class mewarisi disebut dengan superclass. Salah satu keuntungan dari
inheritance adalah Subclass dari merubah atau memodifikasi apa yang telah diwariskan
oleh Superclass. Untuk mewarisi dari kelas, gunakan kata kunci perluasan.Contoh ini
menunjukkan bagaimana cara kelas Anjing mewarisi dari kelas Hewan.

class Dog extends Animal {


// some code
}
2.2.Inheritance

Ketika satu kelas diwarisi dari kelas lain, ia mewarisi semua variabel dan metode non-
pribadi superclass.
Contoh:
class Animal {
protected int legs;
public void eat() {
System.out.println("Animal eats");
}
}
class Dog extends Animal {
Dog() {
legs = 4;
}
}

Kami sekarang dapat mendeklarasikan objek Dog dan memanggil metode makan
superclass-nya:

class MyClass {
public static void main(String[ ] args) {
Dog d = new Dog();
d.eat();
}
}
2.3.Inheritance

konstruktor dari superclass disebut ketika subclass yang dipakai.Contoh: class A {


public A() {
System.out.println("New A");
}
}
class B extends A {
public B() {
System.out.println("New B");
}
}
class Program {
public static void main(String[ ] args) {
B obj = new B();
}
}
/*Outputs
"New A"
"New B"
*/

3.Polymorphism

Dalam kamus pemrograman polymorphism mengacu pada prinsip dalam biologi di mana suatu organisme atau
spesies dapat memiliki banyak bentuk atau tahapan yang berbeda. Prinsip ini juga dapat diterapkan untuk
pemrograman dan bahasa seperti bahasa Java berorientasi objek. Subclass kelas dapat menentukan perilaku
mereka sendiri yang unik dan belum berbagi beberapa fungsi yang sama dari kelas induk. Panggilan ke
metode anggota akan menyebabkan implementasi yang berbeda dijalankan, tergantung pada jenis objek yang
memohon metode.
Berikut ini contohnya: Anjing dan Kucing adalah kelas yang mewarisi dari kelas Hewan.

class Animal {
public void makeSound() {
System.out.println("Grr...");
}
}
class Cat extends Animal {
public void makeSound() {
System.out.println("Meow");
}
}
class Dog extends Animal {
public void makeSound() {
System.out.println("Woof");
}
}

Karena semua objek Kucing dan Anjing adalah objek Hewan, kita dapat melakukan hal berikut:
public static void main(String[ ] args) {
Animal a = new Dog();
Animal b = new Cat();
}

Kami telah membuat dua variabel referensi jenis Hewan, dan mengarahkan mereka ke objek Kucing dan
Anjing.
Sekarang, kita bisa memanggil metode makeSound ().

a.makeSound();
//Outputs "Woof"

b.makeSound();
//Outputs "Meow"

4.1.Method Overriding

Seperti yang kita lihat di pelajaran sebelumnya, subkelas dapat mendefinisikan perilaku yang khusus untuk
jenis subkelas, yang berarti bahwa subkelas dapat menerapkan metode kelas induk berdasarkan kebutuhannya.
Fitur ini dikenal sebagai metode override.
Contoh:

class Animal {
public void makeSound() {
System.out.println("Grr...");
}
}
class Cat extends Animal {
public void makeSound() {
System.out.println("Meow");
}
}

Aturan untuk Metode Mengganti:


- Harus memiliki tipe dan argumen pengembalian yang sama
- Tingkat akses tidak dapat lebih ketat daripada tingkat akses metode yang ditimpa (Contoh: Jika metode
superclass dinyatakan publik, metode yang menggantikan di sub kelas dapat menjadi tidak pribadi atau tidak
dilindungi)
- Metode yang dinyatakan final atau statis tidak dapat ditimpa
- Jika metode tidak dapat diwariskan, itu tidak dapat ditimpa
- Konstruktor tidak dapat ditimpa
Metode override juga dikenal sebagai runtime polymorphism.
4.2.Method Overloading

Ketika metode memiliki nama yang sama, tetapi parameter yang berbeda, ini dikenal sebagai metode
overloading.
Ini bisa sangat berguna ketika Anda membutuhkan fungsionalitas metode yang sama untuk berbagai jenis

parameter.Contoh :
int max(int a, int b) {
if(a > b) {
return a;
}
else {
return b;
}
}

5.1.Abstraction

Class abstract digunakan untuk mendefinisikan sebuah kelas yang hanya mendeklarasikan format generik
tanpa mengimplementasikan secara detail fungsi-fungsi dari kelas abstrak yang ada. Perintah abstract
diletakkan sebelum nama Class dan nama Method. Contoh dunia nyata yang bagus adalah sebuah buku.
Ketika Anda mendengar istilah buku, Anda tidak tahu secara persis spesifikasinya, seperti jumlah halaman,
warna, atau ukurannya, tetapi Anda memahami gagasan, atau abstraksi, dari sebuah buku.
Konsep abstraksi adalah bahwa kita fokus pada kualitas-kualitas penting, daripada karakteristik khusus dari
satu contoh khusus.
Kelas abstrak didefinisikan menggunakan kata kunci abstrak.
- Jika kelas dideklarasikan abstrak itu tidak dapat dipakai (Anda tidak dapat membuat objek dari jenis itu).
- Untuk menggunakan kelas abstrak, Anda harus mewarisinya dari kelas lain.
- Setiap kelas yang berisi metode abstrak harus didefinisikan sebagai abstrak.

5.2.Abstract Class

Sebagai contoh, kita dapat mendefinisikan kelas Satwa kita sebagai abstrak:

abstract class Animal {


int legs = 0;
abstract void makeSound();
}

Metode makeSound juga abstrak, karena tidak ada implementasi di superclass.


Kita dapat mewarisi dari kelas Hewan dan menentukan metode makeSound () untuk subkelas:

class Cat extends Animal {


public void makeSound() {
System.out.println("Meow");
}
}
6.1.Interfaces

An interface adalah kelas yang benar-benar abstrak yang hanya berisi metode abstrak.
Beberapa spesifikasi untuk antarmuka:
- Ditetapkan menggunakan kata kunci antarmuka.
- Dapat memuat hanya variabel final statis.
- Tidak dapat memuat konstruktor karena antarmuka tidak dapat digunakan.
- Antarmuka dapat memperluas antarmuka lainnya.
- Kelas dapat mengimplementasikan sejumlah antarmuka.
Contoh :
interface Animal {
public void eat();
public void makeSound();
}

6.2.Interfaces

Use the implements keyword to use an interface with your class.

interface Animal {
public void eat();
public void makeSound();
}

class Cat implements Animal {


public void makeSound() {
System.out.println("Meow");
}
public void eat() {
System.out.println("omnomnom");
}
}
7.Casting

Menetapkan nilai satu jenis ke variabel jenis lain dikenal sebagai Pengecoran Jenis.

Untuk mentransmisikan nilai ke tipe tertentu, tempatkan tipe dalam tanda kurung dan posisikan di depan
nilainya.
Contoh:

nt a = (int) 3.14;
System.out.println(a);
//Outputs 3

Kode di atas adalah casting nilai 3.14 ke integer, dengan 3 sebagai nilai yang dihasilkan.
Contoh lain:

double a = 42.571;
int b = (int) a;
System.out.println(b);
//Outputs 42

Java mendukung pengecoran bilangan bulat otomatis ke titik mengambang, karena tidak ada kehilangan
presisi.
Di sisi lain, jenis pengecoran adalah wajib ketika menetapkan nilai floating point ke variabel integer.

8.Downcasting

Untuk kelas, ada dua jenis pengecoran.

Upcasting
Anda dapat mentransmisikan turunan dari subclass ke superclass-nya.
Perhatikan contoh berikut, dengan asumsi bahwa Cat adalah subkelas Animal.
Animal a = new Cat();

Java secara otomatis menaikan variabel jenis Cat ke jenis Hewan.

Downcasting
Pengecoran objek superclass ke subkelasnya disebut downcasting.
Contoh:
Animal a = new Animal();
((Cat)a).makeSound();
9.1.Anonymous Classes

Kelas anonim memungkinkan Anda membuat kode Anda lebih ringkas. Mereka memungkinkan Anda untuk
mendeklarasikan dan instantiate kelas pada saat yang sama. Mereka seperti kelas lokal, kecuali bahwa mereka
tidak memiliki nama. Gunakan mereka jika Anda perlu menggunakan kelas lokal hanya sekali.
Kelas anonim adalah cara untuk memperluas kelas yang ada dengan cepat.
Misalnya, pertimbangkan untuk memiliki mesin kelas:

class Machine {
public void start() {
System.out.println("Starting...");
}
}

Saat membuat objek Machine, kita dapat mengubah metode start dengan cepat.
public static void main(String[ ] args) {
Machine m = new Machine() {
@Override public void start() {
System.out.println("Wooooo");
}
};
m.start();
}
//Outputs "Wooooo";

9.2.Anonymous Classes

Modifikasi hanya berlaku untuk objek saat ini, dan bukan kelas itu sendiri. Jadi jika kita membuat objek lain
dari kelas itu, implementasi metode awal akan menjadi yang didefinisikan di kelas.
class Machine {
public void start() {
System.out.println("Starting...");
}
}
public static void main(String[ ] args) {
Machine m1 = new Machine() {
@Override public void start() {
System.out.println("Wooooo");
}
};
Machine m2 = new Machine();
m2.start();
}
//Outputs "Starting..."
10.Inner Classes

Java mendukung kelas-kelas bersarang; kelas dapat menjadi anggota kelas lain.
Menciptakan kelas batin cukup sederhana. Tulis saja kelas di dalam kelas. Tidak seperti kelas, kelas batin bisa
menjadi pribadi. Setelah Anda mendeklarasikan kelas privat tertutup, itu tidak dapat diakses dari objek di luar
kelas.
Contoh:
class Robot {
int id;
Robot(int i) {
id = i;
Brain b = new Brain();
b.think();
}

private class Brain {


public void think() {
System.out.println(id + " is thinking");
}
}

11.1.Comparing Objects

Di java , kita dapat membedakan dua jenis persamaan.Persamaan referensi objek: ketika dua referensi objek
mengarah ke objek yang sama.Kesetaraan nilai objek: ketika dua objek terpisah kebetulan memiliki nilai /
status yang sama.Jika dua objek memiliki referensi yang sama, keduanya sama nilainya juga.
Ingat bahwa ketika Anda membuat objek, variabel menyimpan referensi ke objek.
Jadi, ketika Anda membandingkan objek menggunakan operator pengujian kesetaraan (==), itu sebenarnya
membandingkan referensi dan bukan nilai objek.
Contoh:
class Animal {
String name;
Animal(String n) {
name = n;
}
}

class MyClass {
public static void main(String[ ] args) {
Animal a1 = new Animal("Robby");
Animal a2 = new Animal("Robby");
System.out.println(a1 == a2);
}
}
//Outputs false

11.2.equals()

Setiap objek memiliki metode equals equals () yang digunakan untuk pengujian kesetaraan semantik.
Namun, untuk membuatnya bekerja untuk kelas kami, kami perlu menimpanya dan memeriksa kondisi yang
kami butuhkan.
Ada cara sederhana dan cepat menghasilkan metode equals (), selain menulisnya secara manual.
Cukup klik kanan di kelas Anda, buka Source-> Generate hashCode () dan equals () ...
Metode hashCode () yang dihasilkan secara otomatis digunakan untuk menentukan tempat menyimpan objek
secara internal. Setiap kali Anda menerapkan sama, Anda HARUS juga menerapkan hashCode.
Kita dapat menjalankan tes lagi, menggunakan metode yang sama:
public static void main(String[ ] args) {
Animal a1 = new Animal("Robby");
Animal a2 = new Animal("Robby");
System.out.println(a1.equals(a2));
}
//Outputs true

12.1.Enums

Sebuah enum di Java sama seperti kelas lainnya, dengan set contoh yang telah ditentukan. Enum adalah tipe
khusus yang digunakan untuk mendefinisikan koleksi konstanta.
Berikut ini contoh Enum sederhana:
enum Rank {
SOLDIER,
SERGEANT,
CAPTAIN
}
Perhatikan bahwa nilai dipisahkan koma.
Anda bisa merujuk ke konstanta di enum di atas dengan sintaks dot.
Rank a = Rank.SOLDIER;
12.2.Enums

Setelah mendeklarasikan Enum, kita dapat memeriksa nilai yang sesuai dengan, a switch statement.
Rank a = Rank.SOLDIER;

switch(a) {
case SOLDIER:
System.out.println("Soldier says hi!");
break;
case SERGEANT:
System.out.println("Sergeant says Hello!");
break;
case CAPTAIN:
System.out.println("Captain says Welcome!");
break;
}
//Outputs "Soldier says hi!"

12.3.Enums

Anda harus selalu menggunakan Enums ketika sebuah variabel (terutama parameter metode) hanya dapat
mengambil satu dari sekumpulan kecil nilai yang mungkin.
Jika Anda menggunakan Enums bukan bilangan bulat (atau kode String), Anda meningkatkan pemeriksaan
waktu-kompilasi dan menghindari kesalahan dari melewatkan konstanta yang tidak valid, dan Anda
mendokumentasikan nilai mana yang sah untuk digunakan.

13.Using the Java APl

Java adalah bahasa pemrograman tingkat tinggi yang berorientasi objek dan program java tersusun dari
bagian yang disebut kelas. Kelas terdiri atas metode-metode yang melakukan pekerjaan dan mengembalikan
informasi setelah melakukan tugasnya. Para pemrogram  Java banyak mengambil keuntungan dari kumpulan
kelas di pustaka kelas Java, yang disebut dengan Java Application Programming Interface (API). Kelas-kelas
ini diorganisasikan menjadi sekelompok yang disebut paket (package). Java API telah menyediakan
fungsionalitas yang memadai untuk menciptakan applet dan aplikasi canggih. Jadi ada dua hal yang harus
dipelajari dalam Java, yaitu mempelajari bahasa Java dan bagaimana mempergunakan kelas pada Java API.
Kelas merupakan satu-satunya cara menyatakan bagian eksekusi program, tidak ada cara lain. Pada Java
program javac untuk mengkompilasi file kode sumber Java menjadi kelas-kelas bytecode. File kode sumber
mempunyai ekstensi *.java. Kompilator javac menghasilkan file bytecode kelas dengan ekstensi *.class.
Interpreter merupakan modul utama sistem Java yang digunakan aplikasi Java dan menjalankan program
bytecode Java.

Beberapa keunggulan java yaitu java merupakan bahasa yang sederhana. Java dirancang agar mudah
dipelajari dan digunakan secara efektif. Java tidak menyediakan fitur-fitur rumit bahasa pemrograman tingkat
tinggi, serta banyak pekerjaan pemrograman yang mulanya harus dilakukan manual, sekarang digantikan
dikerjakan Java secara otomatis seperti dealokasi memori. Bagi pemrogram yang sudah mengenal bahasa C+
+ akan cepat belajar susunan bahasa Java namun harus waspada karena mungkin Java mengambil arah
(semantiks) yang berbeda dibanding C++.

Java API adalah kumpulan kelas dan antarmuka yang telah ditulis untuk Anda gunakan.
Dokumentasi Java API dengan semua API yang tersedia dapat ditemukan di situs web Oracle di
http://docs.oracle.com/javase/7/docs/api/
Setelah Anda menemukan paket yang ingin Anda gunakan, Anda perlu mengimpornya ke kode Anda.
Paket dapat diimpor menggunakan kata kunci impor.
Sebagai contoh:
import java.awt.*;

The awt package berisi semua kelas untuk membuat antarmuka pengguna dan untuk melukis grafik dan
gambar.

Anda mungkin juga menyukai