추상클래스

실전 자바 강좌 (ver.2018) - 초보부터 개발자 취업까지!! 강의를

개인공부하며 정리하는 용도의 포스팅입니다.

학습목표


  • 인터페이스와 비슷한 형태로 구체화되지 않은 멤버를 이용해서 클래스를 만드는 방법 학습

추상클래스란?


클래스의 공통된 부분을 뽑아서 별도의 클래스(추상클래스)로 만들어 놓고, 상속해서 사용

abstract1

abstract 클래스의 특징

  • 멤버 변수를 가진다
  • abstract 클래스를 상속하기 위해서는 extends를 이용한다.
  • abstract 메서드를 가지며, 상속한 클래스에서 반드시 구현해야 한다.
  • 일반 메서드도 가질 수 있다.
  • 일반 클래스와 마찬가지로 생성자도 있다.

추상클래스 구현


클래스 상속과 마찬가지로 extends 키워드를 이용해서 상속하고 abstract(추상)메서드를 구현한다

public abstract class AbstractClassEx {
    
    int num;
    String str;
    
    public AbstractClassEx() {
        System.out.println("AbstractClassEx constructor");
    }
    
    public AbstractClassEx(int i, String s) {
        System.out.println("AbstractClassEx constructor");
        
        this.num = i;
        this.str = s;
    }
    
    public void fun1() {
        System.out.println(" -- fun1() START -- ");
    }
    
    // 이 부분을 반드시 구현하도록 함
    public abstract void fun2();
}
public class ClassEx extends AbstractClassEx {
    
    public ClassEx() {
        System.out.println("ClassEx constructor");
    }
    
    public ClassEx(int i, String s) {
        super(i, s);
    }
    
    // 위 코드의 public abstract void fun2();를 Override
    @Override
    public void fun2() {
        System.out.println(" --fun2() START -- ");
    }
}

실행

AbstractClassEx ex = new ClassEx(10, "java");
ex.fun1();
ex.fun2();

결과

AbstractClassEx constructor
 -- fun1() START --
 -- fun2() START --

Bank 추상클래스


Bank myBank = new MyBank("박찬호", "123-4567-89012", 10000);

myBank.deposit(); // 예금
myBank.withdraw(); // 출금
myBank.installmentSavings(); // 적금
myBank.cancellation(); // 해약

System.out.println();

myBank.getInfo();

결과

Bank constructor
 -- deposit() START --
 -- withdraw() START --
 -- installmentSavings() START --
 -- cancellation() START --
 
name : 박찬호
account : 123-4567-89012
totalAmount : 10000

abstract2

인터페이스 Vs 추상클래스


공통점

  • 추상 메서드를 가진다
  • 객체 생성이 불가하며 자료형(타입)으로 사용된다

차이점

  • 인터페이스
    • 상수, 추상메서드만 가진다
    • 추상 메서드를 구현만 하도록 한다
    • 다형성을 지원한다
  • 추상클래스
    • 클래스가 가지는 모든 속성과 기능을 가진다
    • 추상 메서드 구현 및 상속의 기능을 가진다
    • 단일 상속만 지원한다

Reference


실전 자바 강좌 (ver.2018) - 추상클래스

Comments