추상 클래스

이승준·2021년 7월 25일
0

Java Study

목록 보기
9/12

추상 클래스란?


  • 추상클래스란 기존 클래스의 공통적인 부분만을 그린 미완성 설계도
  • 추상클래스는 추상메서드를 포함하고 있다는 것을 제외하고는 일반 클래스와 전혀 다르지 않음.
    - 생성자, 멤버변수, 메서드 모두 포함 할 수 있음.
  • abstract 예약어 사용.
  • 선언부만 작성.
abstract 반환타입 메서드이름 (매개변수);
  • 다형성 면에서도, 한 가지 공통 타입으로 사용할 수 있다.
  • 추상 클래스는 인스턴스화가 불가능 하다.

추상클래스의 작성

  • 추상화 : 클래스간의 공통점을 찾아내서 공통의 조상을 만드는 작업
  • 구체화 : 상속을 통해 클래스를 구현, 확장하는 작업

Computer.java

public abstract class Computer {  
    abstract public void display(); 
    abstract public void typing(); 
    public void turnOn() { 
        System.out.println("Turn On!"); 
    } 
    public void turnOff() { 
        System.out.println("Turn Off!"); 
    } 
}

Computer클래스로 모든 컴퓨터 기기의 공통적인 기능을 추상화.

Desktop.java

public class Desktop extends Computer{ 
    @Override 
    public void display() { 
     System.out.println("Display Desktop!"); 
    } 
    @Override 
    public void typing() { 
        System.out.println("Typing Desktop!"); 
    } 
}

NoteBook.java

public class NoteBook extends Computer{ 
    @Override 
    public void display() { 
        System.out.println("Display NoteBook!"); 
    } 
    @Override 
    public void typing() { 
        System.out.println("Typing NoteBook!"); 
    } 
    public void charging() {
        System.out.println("Charging NoteBook!");
    }
}

Desktop, NoteBook 클래스는 Computer 클래스를 상속받아 display,typing 추상메서드를 구현. 또한 NoteBook 클래스처럼 charging메서드 추가로 확장이 가능하다.

class Player {
  void play() {}
  void stop() {}
}

class CDPlayer extends Player {
   
    void play() {/*구체적인 구현*/}

    void stop() {/*구체적인 구현*/}
}

위에  코드처럼, Player 클래스에 구현부가 비어있는 메서드를 만들고, 자손 클래스에서 상속 받아 오버라이드 해도 상관없지만, 굳이 abstract 붙여서 추상메서드로 선언하는 것은 자손 클래스에서 추상메서드를 반드시 구현하도록 강요하기 위해서이다.

profile
끊임없이 생각하는 주니어 웹 개발자입니다.

0개의 댓글