본문 바로가기

Java

자바 연습 (상속& 업캐스팅)

반응형

업 캐스팅 한 인스턴스의 오버라이드된 함수에 대해서 하위 클래스의 함수가 호출 된다.

가상 메소드 개념.

업 캐스팅 인스턴스는 하위 클래스에만 존재하는 메소드나 변수에는 접근 불가능. -> 다운캐스팅 필요

 

 

public class Customer {
protected int ID;
protected String Name;
public int bonusPoint;

protected String Grade;


public Customer(String Name, int ID,String gr)
{
this.Name = Name;
this.ID = ID;
this.Grade = gr;

bonusPoint  = 10000;

}

public Customer(String Name, int ID)
{
this.Name = Name;
this.ID = ID;
bonusPoint = 10000;

}

public int take(int price)
{

return price;
}

public void info() {

System.out.println(" 이름 "+Name+" 등급 "+Grade+" 포인트 "+bonusPoint);
}

}

 

 

public class Vip extends Customer{



double sales;
double bonus;

public Vip(String Name, int ID) {


super(Name,ID);
Grade = "VIP";


sales = 0.5;
bonus = 0.4;
Grade ="VIP";
}

public int take(int price)
{
        bonusPoint += bonusPoint*bonus;

price-=(price*sales);
return price;
}

public void info() {

System.out.println(" 이름 "+Name+" 등급 "+Grade+" 포인트 "+bonusPoint);
}

}

 

public class Middle extends Customer{


double sales;
double bonus;


public Middle(String a, int b,String gr )
{
super(a,b,gr);

sales = 0.1;
bonus =0.02;



}

public int take(int price)
{

bonusPoint += bonusPoint*bonus;

price-=(price*sales);
return price;
}

public void info() {

System.out.println(" 이름 "+Name+" 등급 "+Grade+" 포인트 "+bonusPoint);
}

}

 

 

import java.util.*;
public class Main {

public static void main(String[] args) {

ArrayList list = new ArrayList();

Customer co1 = new Customer("신이치",1000,"general");
Customer co2 = new Vip("임현준",10001);
Customer co3 = new Middle("고스케",1002,"Silver");
Customer co4 = new Middle("유스케",1002,"Gold");


list.add(co1);
list.add(co2);
list.add(co3);
list.add(co4);


co1.take(10000);
co2.take(10000);
co3.take(10000);
co4.take(10000);


for(Customer co : list)
{
co.info();
}


}

}

반응형

'Java' 카테고리의 다른 글

인터페이스 default 키워드  (0) 2019.10.28
인터페이스 & 추상 클래스  (0) 2019.10.28
자바 연습 (추상 클래스)  (0) 2019.10.27
final 키워드 사용  (0) 2019.10.27
추상 클래스 & 추상 메소드  (0) 2019.10.27