반응형
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 |
댓글