산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Industrial programming >> java

Java 인터페이스 vs 추상 클래스: 올바른 추상화 선택 가이드

인터페이스란?

Java에서 인터페이스는 클래스가 구현할 수 있는 계약을 정의합니다. 인터페이스에 선언된 모든 메서드는 기본적으로 추상 메서드이며, 본문이 없습니다. 인터페이스는 직접 인스턴스화할 수 없으며 단지 동작을 설명합니다.

인터페이스는 인스턴스 변수를 가질 수 없지만, public static final 수정자로 상수를 선언할 수 있습니다.

추상 클래스란?

추상 클래스는 인스턴스화할 수 없는 클래스로, 추상 메서드(본문 없음)와 구체적 메서드(구현 있음)를 모두 포함할 수 있습니다. 최소 하나의 추상 메서드가 필요합니다.

추상 클래스는 서브클래스의 청사진 역할을 하며, 부모가 정의한 추상 메서드를 서브클래스가 반드시 구현해야 합니다.

인터페이스와 달리 추상 클래스는 인스턴스 필드를 통해 상태를 유지할 수 있고 기본 동작을 제공할 수 있습니다.

인터페이스를 사용하는 이유

추상 클래스를 사용하는 이유

인터페이스 vs 추상 클래스

두 추상화 모두 계약을 정의하는 데 도움이 되지만, 구현과 용도에서 차이가 있습니다. 인터페이스는 메서드만 선언할 수 있지만, 추상 클래스는 기본 구현을 제공할 수 있습니다. 클래스는 하나의 추상 클래스만 확장할 수 있지만 여러 인터페이스는 구현할 수 있습니다.

측면 인터페이스 추상 클래스
조회 속도 동적 디스패치로 일반적으로 느림 가능한 경우 정적 디스패치로 더 빠름
다중 상속 여러 인터페이스 구현 지원 단일 상속만 가능
메서드 본문 추상만 가능(Java 8 이전) 또는 default/static(Java 8+) 추상과 구체적 메서드 모두 포함 가능
상태 인스턴스 필드 선언 불가 인스턴스 필드와 생성자 선언 가능
사용 사례 관련 없는 클래스에 혼입할 역량 정의 공통 구현을 가진 공통 기반 제공
멤버 접근성 모든 멤버 암시적으로 public protected, public, private 가시성 가능
다른 타입 확장 다른 인터페이스 확장 가능 클래스 확장 및 인터페이스 구현 가능
생성자 생성자 정의 불가 서브클래스용 생성자 정의 가능
상수 상수 정의 가능 (public static final) 상수와 일반 필드 모두 정의 가능

샘플 코드: Java 인터페이스와 추상 클래스

인터페이스와 추상 클래스 선언 및 사용법을 보여주는 간결한 예제입니다.

인터페이스 문법

interface Name {
    // 메서드 선언
}

Java 인터페이스 예제

interface Pet {
    void test();
}
class Dog implements Pet {
    public void test() {
        System.out.println("Interface method implemented");
    }
    public static void main(String[] args) {
        Pet p = new Dog();
        p.test();
    }
}

추상 클래스 문법

abstract class Name {
    // 코드
}

추상 클래스 예제

abstract class Shape {
    int b = 20;
    abstract void calculateArea();
}
class Rectangle extends Shape {
    public static void main(String[] args) {
        Rectangle obj = new Rectangle();
        obj.b = 200;
        obj.calculateArea();
    }
    void calculateArea() {
        System.out.println("Area is " + (b * b));
    }
}

java

  1. 포핸드 vs 백핸드 용접: 핵심 차이점과 각 기법 사용 시기
  2. 철 vs 강철: 핵심 차이점 설명
  3. 컷 네일 vs 와이어 네일: 건축용 핵심 차이점 이해
  4. 플라즈마 vs 레이저 커팅: 핵심 차이점과 용도별 선택 가이드
  5. 선반 페이싱 vs 밀링 페이싱: 핵심 차이점 완벽 이해
  6. 밀링 vs 연삭: 핵심 차이점 완벽 해설
  7. Java 추상 클래스와 메서드 완벽 가이드
  8. Java 인터페이스 마스터: 개념, 구현, 모범 사례
  9. 자바 추상화: 코드 단순화와 가독성 향상
  10. 자바 인터페이스 이해하기: 정의, 용도, 모범 사례