Professional Documents
Culture Documents
MODUL 7 (POLYMORPHISM)
//Child.java
public class Child extends Parent{
int x = 10;
@Override
public void info(){
System.out.println("Child Class");
}
}
//Main.java
public class Main {
public static void main(String[] args) {
Parent Objek = new Child();
System.out.println("x = "+ Objek.x);
Objek.info();
}
}
2 Pengenalan //Employee.java
Heterogeneous public class Employee {
Collection //...
}
//Courier.java
public class Courier extends Employee {
//...
}
//Main.java
public class Main {
public static void Proses(Employee emp){
if(emp instanceof Manager){
//lakukan tugastugas manager
}else if(emp instanceof Courier){
//lakukan tugastugas Courier
}else{
//other methode
}
}
public static void main(String[] args) {
Employee[] staff = new Employee[2];
staff[0] = new Manager();
staff[1] = new Courier();
}
}
3 Pengenalan //Employee.java
Polymorphic public class Employee {
Argument //...
}
//Courier.java
public class Courier extends Employee {
//...
}
//Main.java
public class Main {
public static void Proses(Employee emp){
if(emp instanceof Manager){
Manager man = (Manager) emp; //casting
//lakukan tugastugas manager
}else if(emp instanceof Courier){
Courier cou = (Courier) emp; //casting
//lakukan tugastugas Courier
}else{
//other methode
}
}
public static void main(String[] args) {
Manager man = new Manager();
Courier cou = new Courier();
Proses(man);
Proses(cou);
}
}
4 Pengenalan Operator //Employee.java
instanceof public class Employee {
//...
}
//Courier.java
public class Courier extends Employee {
//...
}
//Main.java
public class Main {
public static void Proses(Employee emp){
if(emp instanceof Manager){
//lakukan tugastugas manager
}else if(emp instanceof Courier){
//lakukan tugastugas Courier
}else{
//other methode
}
}
public static void main(String[] args) {
Manager man = new Manager();
Courier cou = new Courier();
Proses(man);
Proses(cou);
}
}
5 Pengenalan Object //Employee.java
Casting public class Employee {
//...
}
//Courier.java
public class Courier extends Employee {
//...
}
//Main.java
public class Main {
public static void Proses(Employee emp){
if(emp instanceof Manager){
Manager man = (Manager) emp; //casting
//lakukan tugastugas manager
}else if(emp instanceof Courier){
Courier cou = (Courier) emp; //casting
//lakukan tugastugas Courier
}else{
//other methode
}
}
public static void main(String[] args) {
Manager man = new Manager();
Courier cou = new Courier();
Proses(man);
Proses(cou);
}
}
6 Pengenalan Object //Parent.java
Casting : Up public class Parent{
Casting protected int number = 10;
@Override
public String toString(){
return "Parent "+number;
}
}
//ChildA.java
public class ChildA extends Parent {
protected int number = 20;
@Override
public String toString(){
return "Child A "+number;
}
public String methodeA(){
return "Methode Child A";
}
}
//ChildB.java
public class ChildB extends Parent {
protected int number = 30;
@Override
public String toString(){
return "Child B "+number;
}
public String methodeB(){
return "Methode Child B";
}
}
//GrandChildA.java
public class GrandChildA extends ChildA {
protected int number = 40;
@Override
public String toString(){
return "Child A "+number;
}
public String methodeGrand(){
return "Methode Child A";
}
}
//Driver.java
public class Driver{
public static void main(String args[]){
Parent p = new Parent();
ChildA cA = new ChildA();
ChildB cB = new ChildB();
GrandChildA gC = new GrandChildA();
System.out.println(p.toString());
System.out.println(cA.toString());
System.out.println(cB.toString());
System.out.println(gC.toString());
}
}
7 Pengenalan Object //Parent.java
Casting : Down public class Parent{
Casting protected int number = 10;
@Override
public String toString(){
return "Parent "+number;
}
}
//ChildA.java
public class ChildA extends Parent {
protected int number = 20;
@Override
public String toString(){
return "Child A "+number;
}
public String methodeA(){
return "Methode Child A";
}
}
//ChildB.java
public class ChildB extends Parent {
protected int number = 30;
@Override
public String toString(){
return "Child B "+number;
}
public String methodeB(){
return "Methode Child B";
}
}
//GrandChildA.java
public class GrandChildA extends ChildA {
protected int number = 40;
@Override
public String toString(){
return "Child A "+number;
}
public String methodeGrand(){
return "Methode Child A";
}
}
//Driver.java
public class Driver{
public static void main(String args[]){
Parent castP;
ChildA castA;
GrandChildA gC;
castP = new ChildB();
System.out.println(castP.toString());
castA = (ChildA)castP;
System.out.println(castA.toString());
System.out.println(castA.methodA());
/*runtime error:
Class Cast Exception
Downcast only to
it’s original object*/
}
}
8 menggunakan //StatisOverloading.java
Overloading/statis public class StatisOverloading {
polimorfism public static int average(int n1, int n2){
return (n1+n2)/2;
}
public static double average(double n1, double n2){
return (n1+n2)/2;
}
public static int average(int n1, int n2, int n3){
return (n1+n2+n3)/3;
}
}
//StatisPoly.java
public class StatisPoly{
public static void main(String[] args) {
System.out.println(average(5, 6));
System.out.println(average(5.0, 6.0));
System.out.println(average (5, 6, 7));
}
}
9 Menggunakan //Human.java
Overriding/dinamis public class Human {
polimorfism
public void run(){
System.out.println("Human is running");
}
}
//Student.java
public class Student extends Human{
@Override
public void run(){
System.out.println("Student is running");
}
}
//DinamisPoly.java
public class DinamisPoly{
public static void main(String[] args){
Human h1 = new Human();
h1.run(); // prints 'Human is running'
h1 = new Student(); // polymorphism
h1.run(); // prints 'Student is running'
}
}
10 Menggunakan methode //User.java
Setter and Getter public class User {
(Encapsulation) private String username;
private String password;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
//Main.java
public class Main {
public static void main(String[] args) {
User dori = new User();
//methode setter
dori.setUsername("Dori");
dori.setPassword("pass123");
//methode getter
System.out.println("Username : "+dori.getUsername());
System.out.println("Password : "+dori.getPassword());
}
}
11 Menggunakan kata //Person.java
this dan super public class Person {
String name = "Dori";
int age = 21;
}
//Lecture.java
public class Lecture extends Person {
float salary = 4000f;
String name = "Rismon";
int age = 47;
public void showInfo(){
System.out.println("Name :" + super.name);
System.out.println("Age :" + super.age);
System.out.println("Salary : $"+salary);
}
}
//Main.java
public class Main {
public static void main(String[] args) {
Lecture rismon = new Lecture();
rismon.showInfo();
}
}
setelah itu coba ganti super menjadi this
12 Memanggil parent
class constructor import java.util.Date;
methode overloading
//Employee.java
public class Employee {
private static final double BASE_SALARY = 15000.00;
private String name;
private double salary;
private Date birthDate;
public Employee (String name, double salary, Date DoB){
this.name = name;
this.salary = salary;
this.birthDate = DoB;
}
public Employee (String name, double salary){
this (name, salary, null);
}
public Employee(String name, Date DoB){
this(name, BASE_SALARY, DoB);
}
public Employee(String name){
this(name, BASE_SALARY);
}
}
//Manager.java
public class Manager extends Employee {
private String departement;
public Manager(String name, double salary, String dept){
super(name, salary);
departement = dept;
}
public Manager(String name, String dept){
super(name);
departement = dept;
}
}
//Main.java
public class Main {
public static void main(String[] args) {
Employee man = new Manager("Dori", 16000.00,
"Electrcal");
//other code
}
}