일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 부산 맛집
- 쿠팡메크로
- 반려견 열사병
- 강아지종류
- 강아지 종류
- 강아지 열사병
- 서울대입구 맛집
- 강아지
- 반려견 유기농
- 티켓팅메크로
- 반려견 유기농 사료
- 강아지 유기농 사료
- 반려견 사료등급
- 샤로수길 맛집
- 티켓팅매크로
- 샤로수길 데이트
- 반려견 더위
- 쿠팡매크로
- 반려견
- 동인천 맛집
- 강아지 더위
- 강아지 홀리스틱
- 강아지 유기농
- 홀리스틱 유기농
- 국비지원 예습
- 닥스훈트
- 자동화봇
- 반려견 홀리스틱
- 신포동 맛집
- 반려견 종류
- Today
- Total
심심한잉여의 잡동사니
[JAVA] 추상 클래스 VS 인터페이스 본문
추상 클래스란?
추상 메소드가 1개 이상 있는 클래스이다.
클래스를 설계도라고 했을 때 추상 클래스는 미완성 클래스이다.
추상메소드란?
선언부만 작성하고 구현부는 작성하지 않은 채로 남겨 둔 것이 추상메서드이다.
추상 메서드는 상속받는 클래스에 따라 달라질 수 있다.
추상 클래스 규칙
1. 추상 클래스는 키워드 abstract를 붙여 사용한다.
2. 추상 메서드를 포함하지 않은 클래스에서도 abstract를 붙여 추상 클래스로 지정이 가능하다.
3. 클래스를 abstract를 붙여 추상 클래스로 지정하면 new를 통해 객체를 직접 생성이 불가능하다.
4. 메소드에 abstract를 사용할 경우 interface의 메소드와 같이 구현 부분은 없다.
5. abstract로 선언한 메소드를 자식 클래스에서 반드시(강제) 구현해야한다.(오버라이딩)
6. extends를 사용하여 상속받는다.
인터페이스란?
일종의 추상클래스로 볼 수 있으며 추상 메소드를 가지지만
추상클래스보다 추상화 정도가 높다.추상클래스와 달리 몸통을 갖춘 일반 메서드, 멤버변수를 구성원으로 가질 수 없다(1.8버전부터 default를 사용해 가질 수 있다.)
추상 클래스는 미완성 클래스라고 했을 때 밑그림만 있는 기본 설계도로 볼 수 있다.
인터페이스 규칙
1. 추상 클래스처럼 완전한 것이기 때문에 그 자체만으로 사용되기 보다
다른 클래스를 작성하는 데 도움을 줄 목적으로 작성된다.
2. 구현 메소드를 가질 수 없다.(1.8버전부터 가능함)
3. 모든 멤버 변수는 public static final이어야 하며, 이를 생략할 수 있다.
4. 모든 메서드는 public abstract이어야 하며, 이를 생략할 수 있다.
5. 다중상속이 가능하다.
6. implements를 사용하여 상속받는다.
public static final을 사용하는 이유
인터페이스 변수는 아무 인스턴스도 존재하지 않는 시점이기 때문에 스스로 초기화 될 권한이 없다.
때문에 public static final를 사용해 구현 객체의 같은 상태를 보장한다.
추상클래스
1. 관련성이 높은 클래스 간에 코드를 공유하고 싶은 경우
2. 추상클래스를 상속받을 클래스들이 공통으로 가지는 메소드와 필드가 많거나, public이외 접근제한자가 필요한 경우
3. non-static, non-final 필드 선언이 필요한 경우(각 인스턴스에서 상태 변경을 위한 메소드가 필요한 경우)
인터페이스
1. 서로 관련성이 없는 클래스들이 인터페이스를 구현하게 되는 경우
2. 특정 데이터 타입의 행동을 명시하고 싶은데, 어디서 그 행동이 구현되는지는 신경 쓰지 않는경우.
3. 다중상속을 허용하는 경우★★★★★★★
'코딩일기 > Java' 카테고리의 다른 글
[Java] 리플렉션 Class 클래스 (0) | 2022.04.11 |
---|---|
[JAVA]POJO, DTO, DAO, VO (0) | 2022.04.07 |
[JAVA] DTO와 VO (0) | 2022.03.30 |
[JAVA] 디자인패턴 - 싱글톤 (0) | 2022.03.20 |
[JAVA] JAVA8 버전과 JAVA 11 버전의 특징 (0) | 2022.03.15 |