클래스(Class) 와 인터페이스(Interface)

이명렬·2024년 1월 26일

Java

목록 보기
3/4

Java에서 Class와 Interface는 객체지향 프로그래밍의 핵심 구성 요소
두 개념 모두 추상화를 제공하지만 목적과 사용방법에서 차이가 있음

클래스(Class)

  1. 정의:
    클래스는 객체의 설계도 또는 틀로 간주됨. 클래스는 객체의 상태(속성)와 행동(메소드)을 정의함
  1. 상속:
    클래스는 다른 클래스로 부터 상속(extends)받을 수 있음, 이를 통해 코드 재사용과 확장성을 증가시킴. Java에서 클래스는 단일 상속만을 지원함, 하나의 클래스는 오직 하나의 다른 클래스로 부터만 상속받을 수 있음
  1. 인스턴스화:
    클래스는 인스턴스화될 수 있으며, 이 과정을 통해 메모리에 객체가 생성됨
MyClass obj = new MyClass(); //이는 MyClass 타입의 객체를 생성함
  1. 접근 제어자:
    클래스는 public, private, protected와 같은 접근제어자를 사용해 데이터 캡슐화와 보안을 제공함

인터페이스(Interface)

1.정의:
인터페이스는 메소드의 시그니처만을 정의하는 타입임.
구현이 전혀 없거나(Java8 부터는) 디폴트 메소드 및 정적 메소드를 포함할 수 있음

  1. 구현:
    인터페이스는 클래스에 의해 '구현(implemented)'됨.
    클래스는 인터페이스에 정의된 모든 메소드를 구현해야 함.
    Java에서 클래스는 여러 인터페이스를 구현할 수 있음
  1. 다중 상속:
    인터페이스는 다중 상속을 지원함.
    하나의 인터페이스는 다른 인터페이스로 부터 상속받을 수 있음
  1. 추상화 수준:
    인터페이스는 보다 높은수준의 추상화를 제공함.
    인터페이스는 클래스가 '할 수 있는것(what it can do)'에 집중하고
    클래스는'어떻게 하는지(how it does)'에 집중함


    클래스

차이점

  • 상속 vs 구현:
    클래스는 상속을 통해 다른 클래스의 속성과 행동을 확장함.
    인터페이스는 구현을 통해 클래스에 새로운 행동을 추가함
  • 메소드 정의 :
    클래스는 메소드의 실제 구현을 포함하지만,
    인터페이스는 주로 메소드 시그니처(반환 타입, 이름, 매개변수)만을 정의함
  • 생성자 :
    클래스는 생성자를 가질 수 있지만,
    인터페이스는 생성자를 가질수 없음
  • 인스턴스 변수:
    클래스는 상태(인스턴스 변수)를 가질수 있지만,
    인터페이스는 상태를 가질수 없음(단, 상수는 예외).
  • 다중 상속:
    클래스는 다중 상속을 지원하지 않음,
    인터페이스는 지원함

0개의 댓글