추상클래스와 인터페이스
추상
실제들 간에 공통되는 특성을 추출
ex) 삼성 현대 기아회사
추상클래스
- 실제 클래스들의 공통되는 필드, 메소드를 정의한 클래스
- 공통된 필드와 메소드 이름을 통일할 목적
- 부모 클래스로만 사용 되며 , 객체 생성 불가
- 추상 메서드는 자식 클래스에서 오버라이딩!
인터페이스
- 인터페이스란 .. 개발코드와 객체가 서로 통신 하는 접점이다.
- 개발 코드는 객체의 내부구조를 몰라도 인터페이스의 메소드만 알고있으면된다.
인터페이스 역할
- 개발 코드가 객체에 종속되지 않게 하여 객체를 교체 할 수 있도록 함.
- 개발 코드 변경없이 리턴 값 또는 실행 내용이 다양해 질수있다.(다형성)
인터페이스 구성멤버
- 상수, 추상메소드
- Java 8 부터는 default 메소드, 정적 메소드
상수 필드 선언
- 인터페이스는 상수 필드만 선언가능
- 인터페이스에 선언된 모든 필드는 public static final(상수)의 특징을 가짐
- 상수명은 대문자
- 선언과 동시에 초기화 (static 블록을 작성할수없으므로}
추상 메소드 선언
- 인터페이스의 메소드는 기본적으로 실행 블록이 없는 추상 메소드로 선언한다.
- public abstract를 생략하더라도 컴파일 과정에서 자동적으로 붙음
public interface RemoteControl{
int MAX_VOLUME = 10;
int MIN_VOLUME =0;
public abstract void turnOn();
void turnOff(); //public abstract 생략
void setVolume(int volume); //public abstract 생략
}
디폴트 메소드 선언
- 자바 8 에서 추가된 인터페이스의 새로운 멤버
- [public]이 기본타입으로 default를 붙어야 생성된다.
public interface RemoteControl{
default void setMute(boolean mute){
if(mute){
System.out.println("무음 처리");
}else{
System.out.println("무음 해제");
}
}
정적 메소드 선언
public interface RemoteControl{
static void emptyBattery(){
System.out.println("배터리가 다 소모 되었습니다.");
}
}