[JAVA]추상화

정원석·2023년 8월 13일
0

추상화

구체적인 개념으로부터 공통된 부분들만 추려내어 일반화 할 수 있도록 하는 것이다.

추상 메서드를 하나라도 가지게 되는 클래스는 추상 클래스이다. 일반적으로 사용할 수 있는 단계가 아닌 미완성적 개념인 것이다.

추상클래스의 상속관계

다음은 추상클래스 이다.

abstract public class AbEx1 {
    int a=100;
    
    final String str = "abstract test";
    public String getStr(){
        return str;
    }
    public abstract int getA();
}

다음은 AbEx1을 상속받는 추상클래스 이다.

abstract class AbsEx2 extends AbsEx1{
    public int getA(){
        return a;
    }
    public abstract String getStr();
}

다음은 AbsEx2를 상속받는 일반클래스 AbsEx클래스 이다.

class AbsEx extends AbsEx2{
    public String getStr(){
        return  str;
    }
    public static void main(String[] args){
    AbsEx ae = new AbsEx();
    System.out.println("ae.getA(): "+ ae.getA());
    System.out.println("ae.getStr(): "+ ae.getStr());
    }
}

다음은 추상화를 이해하기 좋은 예시이다.

추상화 활용

추상화는 특정 클래스에서 일부 기능은 공통된 기능이지만 일부 기능이 상속받는 각 클래스들마다 특징적인 변화가 있을 때 상속에 의해 다른 부분만 오버라이딩 하여 사용한다.

상속받는 각 클래스가 decEnerge()가 다르므로 각 환경에 맞게 하기 위해 추상화를 사용한다.

Unit이라는 추상클래스를 상속받는 일반 클래스들을 보자.





이와같이 공통된 부분만 구현하고 약간의 차이가 있는 부분들은 abstract를 사용해 추상 메서드로 선언한다. 즉, 하나의 추상 메서드를 통해 여러 클래스에서 다른 움직임과 모양을 나타낼 수 있다.

profile
Back-End-Dev

0개의 댓글