결국 무엇이든 해내는 사람

(Java)Day09 - 상속을 이용한 은행계좌 만들어보기 본문

두서없는 공부 노트/JAVA

(Java)Day09 - 상속을 이용한 은행계좌 만들어보기

kkm8257 2020. 8. 18. 17:05
반응형

-계획-

1. 기본으로 쓸 계좌 클래스 만들기

2. 계좌클래스를 기준으로 A형 카드와 B형 카드를 만들어본다고 가정

3. Main에서 A형카드사용자와 B형카드사용자를 하나씩 만들어보기

 

package banking;

public class account_sam {
	
	private String client_name;
	private int balance;//잔액
	private int amount;//출입금 액
	
	public account_sam() {
		//기본생성자를 정의하되 , 따로 내용을 구현하지않음 그러면 상속시 문제가 생기지않드라
	}
	
	public account_sam(String a, int b) {

		this.client_name=a;
		this.balance=b;
	
	}
	
	//인스턴스를 생성하기 위해서는 반드시 생성자를 호출
	//부모 클래스로부터 상속받은 메소드 및 필드는 엄연히 부모 클래스에 의해 정의 된 것이고
	//부모의 것이다
	//따라서 부모 클래스의 생성자가 호출되어야 자식클래스에서 사용이가능한것
	//하지만 생성자는 상속되지 않는다!
	//대신 자식 클래스로 인스턴스를 생성할 때 부모클래스의 기본 생성자를 자동으로 호출한다
	
	
	
	public void withdraw(int amount) {
		if(this.balance>=amount) {
			System.out.println("<<<<    "+this.client_name+"님의 계좌정보    >>>>");
			System.out.println("현재잔액 : "+balance+ " 원");
			System.out.println("출금액 : "+amount+ " 원");
			this.balance-=amount;
			System.out.println("출금 후 잔액 : "+balance+ " 원");
			
			
		}
		else {
			System.out.println("<<<<    "+ "잔액이 부족합니다"+"    >>>>");
		}

	}
	
	public void deposit(int amount) {
		System.out.println("<<<<    "+this.client_name+"님의 계좌정보    >>>>");
		System.out.println("현재잔액 : "+balance+ " 원");
		System.out.println("입금액 : "+amount+ " 원");
		this.balance+=amount;
		System.out.println("입금 후 잔액 : "+balance+ " 원");
	}
	///////////////////////////////////////////////////////////////	
	public String getClient_name() {
		return client_name;
	}

	public void setClient_name(String client_name) {
		this.client_name = client_name;
	}

	public int getBalance() {
		return balance;
	}

	public void setBalance(int balance) {
		this.balance = balance;
	}

	public int getAmount() {
		return amount;
	}

	public void setAmount(int amount) {
		this.amount = amount;
	}
	

}

 

 

기준이 되는 계좌 클래스 

이 클래스를 A형 B형 클래스에 각각 상속해줄 예정

그러면 상속 받은 클래스는 모든 변수와 메소드를 가지고 시작

 

이때 생성자에 유의해야함

기본생성자가 없는 상태로 인자를 받는 생성자만 구현해놓을경우 , 상속시 문제가 발생

이는 위 코드 주석에 자세히 설명해놈

 

package banking;

public class type_A_Card extends account_sam {

	public type_A_Card(String a, int b){
		this.setClient_name(a);
		this.setBalance(b);
	}
	
	
	//A유형 카드
	
	public void event_A() {
		
		
		if(this.getBalance()>=10000) {
			System.out.println("통장에 10000원 이상 있을 경우 자동 응모!");
			
		}
		else {
			System.out.println("통장의 잔액이 10000원 적어서 이벤트 응모를 하지 못 하였습니다.");
		}
		
	}
	
}

 

package banking;

public class type_B_Card extends account_sam {

	
	public type_B_Card(String a, int b){
		this.setClient_name(a);
		this.setBalance(b);
	}
	
	
	//B유형카드
	
	public void event_B() {
		System.out.println("B 카드 이용 고객님들은 조건없이 자동 응모됩니다!");
	}
	
}

 

위는 A , B 형 카드를 구현

 

 

package banking;

public class Main {

	public static void main(String[] args) {

		type_A_Card ac1=new type_A_Card("김경민",20000);
		type_B_Card ac2= new type_B_Card("배건수",10000);
		
		ac1.withdraw(5000);
		System.out.println();
		ac2.deposit(10000);
		System.out.println();
		ac1.event_A();
		System.out.println();
		ac2.event_B();
		
		
	}

}

Main에서 수행

반응형
Comments