인터페이스는 객체들 간의 상호작용을 정의하는 '약속'입니다. 인터페이스는 모든 메서드가 추상 메서드로, 실제 구현은 없고 메서드의 시그니처만 정의되어 있습니다. 인터페이스는 주로 다음의 특징과 목적을 가지고 있습니다:
public과 abstract입니다.public, static, final로 선언됩니다.public interface Animal {
void eat(); // public abstract가 생략됨
void sleep();
}
public class Dog implements Animal {
@Override
public void eat() {
System.out.println("Dog is eating");
}
@Override
public void sleep() {
System.out.println("Dog is sleeping");
}
}
추상 클래스는 실체가 없는 관념적인 클래스입니다. 이는 구체적인 클래스를 위한 공통적인 속성과 메서드를 정의하며, 일부는 구현을 제공하고 일부는 추상 메서드로 남겨두어 하위 클래스가 반드시 구현하도록 강제합니다.
abstract 키워드로 선언되며, 하위 클래스에서 반드시 구현해야 합니다.extends 키워드를 사용해 상속받습니다.public abstract class Animal {
public abstract void eat();
public void breathe() {
System.out.println("Animal is breathing");
}
}
public class Cat extends Animal {
@Override
public void eat() {
System.out.println("Cat is eating");
}
}
목적:
구현 방식:
용도:
이러한 개념들은 객체 지향 프로그래밍의 핵심으로, 효율적이고 확장 가능한 소프트웨어 설계를 가능하게 합니다.
default method : 상속 가능
static method : 상속 불가
(인터페이스 내에서 메서드 구현)
| 특성 | 클래스 (Class) | 인터페이스 (Interface) |
|---|---|---|
| 선언 키워드 | class | interface |
| 인스턴스 생성 | 직접 인스턴스 생성 가능 | 직접 인스턴스 생성 불가능 |
| 멤버 | 필드, 메서드, 생성자 등 포함 | 상수와 추상 메서드만 포함 (Java 8 이후 default, static 메서드 포함) |
| 상속 | 단일 상속만 가능 | 다중 구현 가능 |
| 접근 제한자 | 모든 접근 제한자 사용 가능 | 메서드는 기본적으로 public, 필드는 public static final |
| 구현의 유무 | 메서드 구현 포함 가능 | 메서드 구현 불가 (Java 8 이후 default, static 메서드 제외) |
| 사용 목적 | 객체의 속성과 동작 정의 | 클래스 간의 공통된 동작을 정의, 상호작용 규약 설정 |
| 특성 | 인터페이스 (Interface) | 추상 클래스 (Abstract Class) |
|---|---|---|
| 선언 키워드 | interface | abstract class |
| 인스턴스 생성 | 직접 인스턴스 생성 불가능 | 직접 인스턴스 생성 불가능 |
| 멤버 | 상수와 추상 메서드만 포함 (Java 8 이후 default, static 메서드 포함) | 필드, 추상 메서드, 구체 메서드 포함 |
| 상속 | 다중 구현 가능 | 단일 상속만 가능 |
| 접근 제한자 | 메서드는 기본적으로 public, 필드는 public static final | 모든 접근 제한자 사용 가능 |
| 구현의 유무 | 메서드 구현 불가 (Java 8 이후 default, static 메서드 제외) | 일부 메서드 구현 가능, 일부는 추상 메서드로 정의 |
| 사용 목적 | 클래스 간의 공통된 동작을 정의, 상호작용 규약 설정 | 공통된 속성과 동작을 공유, 기본 틀 제공 |
Abstract
인터페이스?
설계도를 위한 설계도
인터페이스는 모든 메소드가 추상메소드
접점?
상호작용 하기 위한 "약속" -> Interface !
상속(extends)가 아닌 구현(implements)
상속: 부모 특성을 자식이 물려 받음.
공통 특성(Animal, People)
포함 관계가 있다.
각 동물은 실체가 있는데
Animal은 관념임
추상 클래스로 만들어~
추상클래스를 구현한 클래스가 추상클래스가 될 수 있음
공통조상도 추상클래스 ㄱㄴ

분기점 나눠놓음
분기점 C라는 클래스가 공통조상
개구리는 분기점 C
분기점 C를 상속받음
부모-자식
조상-자손 ㄱㄴ
인터페이스: 완벽히 추상화된 설계도
모든 메서드가 추상메서드 ㅋㅋ
"접점" 구현하는 거라 public 사용(메서드, 변수)
public abstract + 메서드
public static final + 변수
생략되어있지만 default임ㅋㅋ
raw한 초안이었습니다.
이상입니다.