| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | |||
| 5 | 6 | 7 | 8 | 9 | 10 | 11 |
| 12 | 13 | 14 | 15 | 16 | 17 | 18 |
| 19 | 20 | 21 | 22 | 23 | 24 | 25 |
| 26 | 27 | 28 | 29 | 30 |
Tags
- 타입스크립트
- 다형성
- 노드제이에스
- 자바스크립트
- do it!
- 단계별로 풀어보기
- 자바
- 공부
- 공부단
- SQL
- 백준
- Python
- 운영체제
- Oracle
- 변수
- Java
- TypeScript
- JavaScript
- nodejs
- html
- 파이썬
- 상속
- Do it! 자바스크립트 입문
- Do it 공부단
- 배열
- Do it! 공부단
- 입출력과 사칙연산
- Node.js
- 형변환
- 백엔드 개발
Archives
- Today
- Total
성준이의 공부블로그
[기술면접준비] 추상 클래스와 인터페이스의 차이 본문
728x90
반응형
SMALL
Abstract Class & Interface
Abstract Class
- 하나 이상의 추상 메서드를 포함한 클래스를 뜻한다.
추상 메서드: 구현부 없이 반환 타입과 메서드명, 매개변수 정보만 있는 메서드이다.
- 인스턴스를 생성할 수 없다 하지만
참조자료형으로는 사용할 수 있다. - 생성자의 접근 제한자를 protected로 정의하면 해당 클래스는 같은 패키지 내 혹은 상속관계에서만 인스턴스 생성이 가능하다.
Example
public abstract class Animal {
private String name;
private String kinds;
protected Animal() {}
protected Animal(String name, String kinds) {
this.name = name;
this.kinds = kinds;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getKinds() {
return kinds;
}
public void setKinds(String kinds) {
this.kinds = kinds;
}
public abstract void speak(); // 자식 클래스에서 반드시 @Override 해야 함
}
Interface
- 필드와 일반 메서드, 생성자도 포함할 수 있는 추상 클래스와는 달리
상수와 추상 메서드만을 포함할 수 있다.
Example
[접근제한자] interface 인터페이스명 {}
public interface Animal {
// 추상 메소드 => 몸체(구현)가 없는 메소드! 미완성 메소드!
/* public abstract */ void move();
public /* abstract */ void eat();
public abstract void makeSound();
}
public abstract혹은abstract생략 가능
인터페이스 상속(구현)
public class Cat implements Animal {
@Override
public void move() {
System.out.println("Cat이 사뿐사뿐 걷습니다.");
}
@Override
public void eat() {
System.out.println("Cat이 츄르를 먹습니다.");
}
@Override
public void makeSound() {
System.out.println("냐옹~ 냐옹~~");
}
}
- 해당 인터페이스를 implements한 클래스는 반드시 인터페이스의 추상 메서드를 구현해야한다.
- 추상 메서드를 오버라이딩 하지 않을 시 현 클래스는 추상 메서드를 가지게 되어 추상 클래스가 된다.
- => 객체 생성 불가
요약 정리
인터페이스 =>
상수 필드 + 추상메소드- 클래스가 구현해야 할
추상메소드로 규격 정의 - 인터페이스 구현 시
implements키워드 사용 독립적인 프로그래밍이 가능하고 개발 시간을 단축시킬 수 있다.- 표현식
[접근제한자] interface 인터페이스명 { [public static final] 자료형 변수명 = 값; [public abstract] 반환형 메소드명(매개변수정보); }
- 클래스가 구현해야 할
모든 필드는 기본적으로
public static final키워드가 적용됨추상클래스
추상메소드가 포함된 클래스abstract키워드 사용중복되거나 공통적인 부분은 미리 만들어 진 것을 사용할 수 있고 필요에 따라 재정의가 가능하다.- 표현식
public abstract class 클래스명() {}
728x90
반응형
LIST
'기술면접' 카테고리의 다른 글
| [기술면접준비] 웹 서버(WS)와 웹 애플리케이션 서버(WAS) (0) | 2025.06.30 |
|---|---|
| [기술면접준비] ORM이란 무엇인가? (2) | 2025.06.28 |
| [기술면접준비] 객체지향 설계 원칙 - SOLID (0) | 2025.06.28 |
| [기술면접준비] CRUD (0) | 2025.06.25 |
| [기술면접준비] 오버로딩과 오버라이딩 (0) | 2025.05.20 |