Java

추상클래스와 인터페이스의 차이

체리필터 2021. 2. 8. 13:46
반응형

추상 클래스와 인터페이스의 차이점에 대해 표로 정리해 본다.

  추상클래스 인터페이스 비고
정의 클래스 내 '추상메소드'가 하나 이상 포함되어 있거나 abstract로 정의된 경우 모든 메소드가 추상 메소드인 경우  
목적 상속을 받아 기능을 이용하고 확장 하는 것 함수의 구현을 강제하기 위함. 이로 인해 구현 객체의 같은 동작을 보장 함.  
상속, 구현 다중 상속 지원하지 않아 1개만 상속 구현이라서 여러개의 인터페이스를 구현할 수 있음  
구상 메소드 구상 메소드가 존재할 수 있다. 구상 메소드 자체가 있을 수 없다.  
생성자 생성자를 가질 수 있다. 생성자를 가질 수 없다.  
변수 일반 변수를 가질 수 있다. 상수만 가질 수 있다.  
       
       

 

예제

도형

package com.example.demo.abst;

public abstract class Shape {
    public abstract void draw();
}

기본적으로 추상클래스 또는 인터페이스에서 구현해야 할 메소드를 '선언'한다.

그리고 나서 해당 메소드를 실제로 구현할 때는 추상적인 내용이 아니라 구상, 구체적인 내용을 기록한다.

@Slf4j
public class Circle extends Shape {
    @Override
    public void draw() {
        log.info("draw circle");
    }
}
@Slf4j
public class Rectangle extends Shape {
    @Override
    public void draw() {
        log.info("draw rectangle");
    }
}
@Slf4j
public class Triangle extends Shape {
    @Override
    public void draw() {
        log.info("draw triangle");
    }
}

 

각각 구현된 Shape들을 간편하게 가져다가 사용하기 위해서는 Factory Pattern을 사용한다. 간단하게 하기 위해 int를 사용했지만 Enum 값을 사용하여 명시적으로 무엇을 사용할지 표현하는 것이 좋다.

public class ShapeFactory {
    public static Shape getShape(int shape) {
        switch (shape) {
            case 1:
                return new Triangle();
            case 2:
                return new Rectangle();
            case 3:
                return new Circle();
            default:
                return null;
        }
    }
}

사용은 다음과 같이 한다.

public class ShapeTest {
    @Test
    public void shapeTest() {
        Shape shape = ShapeFactory.getShape(2);
        shape.draw();
    }
}

 

참조

brunch.co.kr/@kd4/6

 

자바의 추상 클래스와 인터페이스

추상 클래스와 인터페이스의 차이 | 추상 클래스(Abstract class)와 인터페이스(Interface)의 차이 및 존재 이유를 설명해주세요. 클래스는 크게 일반 클래스와 추상 클래스로 나뉘는데 추상 클래스는

brunch.co.kr

alecture.blogspot.com/2011/05/abstract-class-interface.html

 

자바의 추상클래스(abstract class)와 인터페이스(interface)

자바의 상속 개념을 공부할때 빠지지 않고 등장하는 것이 바로 오늘 배울 추상클래스(abstract class)와 인터페이스(interface)다. 무슨 공통점이 있는지 무슨 차이점이 있는지 말도 애매모호하고 서로

alecture.blogspot.com

 

반응형