본문 바로가기
언어 공부/Java

[JAVA]추상클래스, 추상매소드

by krapoi 2021. 10. 8.
반응형

추상 메소드란?

추상 메소드에 대해 알아보기 전에 추상화를 먼저 알아보자

 

추상화란 클래스 간의 공통점을 찾아내서 공통의 부모로 묶는 작업이다.

추상 메소드는 여러 객체에 공통되는 부분을 부모 클래스에 선언(구현도 가능)하고 자식 클래스에서 특징을 구현한다.

추상 메소드를 사용하는 이유

우리가 개발 또는 유지보수를 하다 보면 같은 부모를 두 번 정의한 부분이 있을 것이다. 그 부분을 간략하게 줄일 수 있다. 그리고 가끔가다가 재구현을 하려 했는데 안 할 때가 있는데 그때 재 구현하라고 알려준다.

 

추상 클래스의 장점

이제 추상 클래스의 장점에 대해 알아보자.

1. 부모 클래스에서 공통부분을 구현하면 자식 클래스에서 상속받아 구체화하기 편하다.

2. 자식 클래스에서 추상 메서드를 반드시 구현하도록 강요한다.

3. 공통 사항이 한 곳에서 관리되기 때문에 개발 또는 유지보수에 용이함.

 

추상 메소드 선언 방법

이제 추상 클래스, 추상 메소드의 선언 방법을 알아보자.

abstract class 클래스명{
	abstract void 메소드명();
}

이런 식으로 선언한다.

 

당연한 말이지만, 주석으로 무슨 기능인지 설명하면 가독성이 높아진다.

참고로 추상 메소드를 포함하지 않아도 abstract로 클래스를 선언하면 추상 클래스로 인식한다.

 

추상 클래스 생성법

추상 클래스는 구현되지 않은 기능을 포함한 클래스이기떄문에 인스턴스화 시킬수 없다. 그래서 다른 클래스에서 추상 클래스를 상속하여 구현되지않은 메소드를 재 구현하고 자식 클래스를 인스턴스화 하여 사용한다.

부모클래스 class = new 자식클래스();
또는
자식클래스 class = new 자식클래스();

 

추상 클래스 예제

마지막으로 예제를 하나 보여주고 마치도록 하겠다.

 

부모 클래스 abstruct

abstract class abstruct {
    abstract public void hello();
}

자식 클래스 Human

public class Human extends abstruct{

        @Override
        public void hello() {
            System.out.println("Hello");
        }



}

실행 클래스 

public class Abstracttest {

        public static void main(String[] args) {
            abstruct h = new Human();
            h.hello();
			//결과 : Hello
        }
    }

부모 클래스 abstruct에서 받아와 자식 클래스인 Human에서 hello라는 추상 메소드를 재 구현하고,

실행 클래스 Abstracttest에서 생성한 다음 출력해 보았다.

실행 클래스에서 보이듯이 부모 클래스 h = new 자식 클래스의 방식으로 인스턴스 화한다.

 

이 포스트를 extends와 implements 설명하기 전에 먼저 올리려 했는데 예상외로 늦어졌다.

어쨌든 이번에는 추상 클래스와 메소드에 대해 알아보았다.

반응형