ㅇ 추상클래스 (abstract class)
1. 일반 클래스에 비해 약간 추상적이다. (일반 메소드 구현 가능)
2. 반드시 하나 이상의 추상 메소드를 가지며, 객체를 생성할 수 없다.
- abstract 메소드
정의만 되어있다.
- 용도
1. 실체 클래스들의 공통된 필드와 메소드의 이름을 통일할 목적
2. 실체 클래스를 작성할 때 시간을 절약: 실체 클래스는 추가적인 필드와 메소드만 선언
3. 실체 클래스 설계 규격을 만들고자 할 때: 필드와 메소드를 미리 정의하고 상속받아 작성
abstract 클래스를 상속하였으면, 그 클래스는 반드시 해야하는 것이 있다.
abstract 메소드들을 오버라이딩을 해주어야 하는데, 2가지 방법이 있다.
1. 하위 클래스를 abstract 로 선언한다.
하위 클래스도 추상클래스로 선언함으로써 반드시 오버라이딩을 하지 않아도 되게 한다.
2. abstract 메소드를 하위 클래스에서 오버라이딩한다.
ㅇ 인터페이스 (interface)
- interface 특징
1. 인터페이스 내에 존재하는 메소드는 무조건 public abstract 로 선언된다.
abstract 로 고정이기 때문에, 일반 메소드를 구현할 수 없다. 모두 추상 메소드이다.
2. 인터페이스 내에 존재하는 변수는 무조건 public static final 로 선언된다.
final 로 고정이기 때문에, 무조건 상수이다.
- interface는 이렇게도 사용할 수 있다.
interface 기반 상수표현 -> 자바의 다수 상수선언 방식이 있다.
public interface Week {
// 무조건 public static final
int MON = 1, TUE = 2, WED = 3, THU = 4, FRI = 5, SAT = 6, SUN = 7;
}
이 인터페이스를 implements한 클래스는 MON 이 1로 작동해서 1의 역할을 해줄 수 있다. (직관성?)
'기타 > JAVA' 카테고리의 다른 글
[JAVA Network] 채팅 서버/클라이언트 (0) | 2018.12.03 |
---|---|
[JAVA] 객체와 클래스 (0) | 2018.07.09 |
[JAVA] Calendar 클래스 (0) | 2018.07.08 |
[JAVA] Map-SortedMap / TreeMap 사용하기 (0) | 2018.07.08 |
[JAVA] Map / HashMap 사용하기 (0) | 2018.07.08 |