Java

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

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

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

  추상클래스 인터페이스 비고
정의 클래스 내 '추상메소드'가 하나 이상 포함되어 있거나 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");
    }
}

 

728x90

각각 구현된 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

 

728x90
반응형