Java

[Java] 추상 메소드를 포함하는 추상 클래스

junga 2022. 9. 12. 13:59

추상 메소드(abstract method)


  • 추상메소드란 자식클래스에서 반드시 오버라이딩해야만 사용할 수 있는 메소드를 의미한다.
  • 추상메소드는 선언부만이 존재하며, 구현부는 없다. 이 구현부를 자식클래스에서 오버라이딩하여 사용한다.
abstract 반환타입 메소드이름();


추상 클래스(abstract class)


  • 하나 이상의 추상 메소드를 포함하는 클래스를 추상클래스라고 한다.
  • 추상 클래스는 동작이 정의되어 있지 않은 추상메소드를 포함하고 있으므로, 인스턴스를 생성할 수 없다.
  • 자식클래스에서 추상클래스의 모든 추상메소드를 오버라이딩하고 나서야 자식클래스의 인스턴스를 생성할 수 있다.
abstract class 클래스이름{
    abstract 반환타입 메소드이름();
}
// 롤 챔피언 별 스킬을 출력해 보자.
abstract class Skill{
    abstract void q();
    abstract void w();
    abstract void e();
    abstract void r();
}

// 티모 스킬
class Teemo extends Skill{
    void q(){System.out.println("실명 다트");}
    void w(){System.out.println("신속한 이동");}
    void e(){System.out.println("맹독 다트");}
    void r(){System.out.println("유독성 함정");}
}

// 판테온 스킬
class Pantheon extends Skill{
    void q(){System.out.println("혜성의 창");}
    void w(){System.out.println("방호의 도약");}
    void e(){System.out.println("방패 돌격");}
    void r(){System.out.println("거대 유성");}
}

public class Main{
    public static void main(String[] args){
        Teemo teemo = new Teemo();
        Pantheon pantheon = new Pantheon();

        teemo.q();     // 실명 다트
        teemo.w();     // 신속한 이동
        pantheon.q();  // 혜성의 창
        pantheon.w();  // 방호의 도약

    }
}