본문 바로가기
JAVA

[Java] 추상클래스

by watergrace2u 2020. 9. 12.
반응형
SMALL

인터페이스와 달리 모든 메서드가 추상메서드는 아니다

(일반메서드 + 추상메서드)

목적 : 추상클래스를 상속받아서 기능을 이용하고 확장시키기 위해

- 추상클래스에는 추상메서드를 일단 선언만 해놓는다.

- 클래스이기 때문에 생성자, 상속(단일) 지원

- 키워드 abstract 로 표시

- 추상클래스는 객체를 만들 수 없다. 따라서 서브클래스를 만드는 용도로만 사용된다.

- 공통된 부분을 추상메서드로 만들어놓는다.

 

<예제>

Bank.java(추상클래스)

public abstract class Bank {
	// 추상클래스 
	String name;
	String account; 
	int total;

	public Bank(String name,String account,int total) {
		System.out.println("Bank constructor");

		this.name = name;
		this.account = account;
		this.total = total;
	}

	// 예금
	public void deposit() {
		System.out.println("---deposit()---");
	}
	// 출금
	public void withdraw() {
		System.out.println("---deposit()---");
	}
	// 적금(추상메서드)
	public abstract void installmentSavings();

	// 해약(추상메서드)
	public abstract void cancellation();

	// 정보출력
	public String toString() {
		return "name: " + name + " / account: "+account+" / total: "+total;
	}

}

 

MyBank.java

public class MyBank extends Bank {
	public MyBank(String name,String account,int total) {
		super(name,account,total); // 슈퍼클래스 Bank의 생성자 사용 
	}
	
	// 여기서 추상메서드들을 재정의해줌.
	public void installmentSavings() {
		System.out.println("--installmentSavings()--");
	}

	// 여기서 재정의 
	public void cancellation() {
		System.out.println("--cancellation()--");
	}
}

 

MainClass.java

public class MainClass {

	public static void main(String[] args) {
		Bank myBank = new MyBank("송하은","123-456",1000000);
		
		myBank.deposit();
		myBank.withdraw();
		myBank.installmentSavings();
		myBank.cancellation();
		
		System.out.println();
		System.out.print(myBank); // toString()메서드 자동호출!
	}
}

 

출력결과

반응형
LIST

'JAVA' 카테고리의 다른 글

[JAVA] 자바의 특징 및 장점  (0) 2021.04.10
[Java] Collection(컬렉션)  (0) 2020.09.14
[Java] StringBuffer, StringBuilder  (0) 2020.09.12
[Java] 인터페이스  (0) 2020.09.12
[Java] toString() 메서드 자동 호출  (0) 2020.09.05

댓글