남궁성님의 자바의 정석 기초편을 보면서 혼자 공부하는 공간입니다. 참고 부탁드립니다.
인터페이스 (interface)
- 추상메서드의 집합
- 구현된 것이 전혀없는 설계도. 껍데기 (모든 멤버가 public)
interface 인터페이스이름 {
public static final 타입 상수이름 = 값; // 상수라서 final 붙음. 인터페이스는 변수 X , IV X, CV X
public abstract 메서드이름 (매개변수목록); // 모든 멤버가 public
}
인터페이스 상속
- 인터페이스의 조상은 인터페이스만 가능 (Object가 최고 조상 X )
- 다중 상속이 가능 (추상메서드는 충돌해도 문제 없음 ) / 자바는 단일 상속만 가능
interface Fightable extends Movable, Attackable{}
interface Movable {
void move (int x, int y) ;
}
interface Attackable {
void attack (Unit u);
}
인터페이스의 구현
- 인터페이스에 정의된 추상 메서드를 완성하는 것
class 클래스이름 implements 인터페이스이름 {
// 인터페이스에 정의된 추상메서드를 모두 구현해야 한다.
}
class Fightable {
void move(int x, int y); // public abstract 생략된것!
void attack (Unit u);
}
class Fighter implements Fightable {
public void move (int x, int y) { 내용 입력 }
public void attack (Unit u) { 내용 입력 }
}
→ Fighter클래스는 Fightable 인터페이스를 구현했다.
abstract class Fighter implements Fightable {
public void move(int x, int y){ 내용입력}
}
→ 일부만 구현하는 경우 , 클래스 앞에 abstract를 붙여야 함
요약!
* 인터페이스란 ?
추상메서드의 집합 / 상수 + static 메서드 + 디폴트 메서드 추가 (JDK 1.8 부터)
* 인터페이스 구현이란 ?
인터페이스 추상메서드 몸통{} 만들기 (미완성 설계도 완성하기)
class AudioPlayer extends Player {
void play(int pos) {내용입력}
void stop(){내용입력}
} // 추상 메서드 구현
class Fighter implements Fightable {
public void move(int x, int y) { 내용 입력 }
public void attack (Unit u) { 내용 입력 }
} // 인터페이스 구현
* 추상 클래스와 인터페이스의 공통점은 ?
추상 메서드를 가지고 있다. (미완성 설계도)
* 추상 클래스와 인터페이스의 차이점 ?
인터페이스는 iv를 가질 수 없다.
'프로그래밍 > JAVA' 카테고리의 다른 글
자바의 정석 기초 ( 내부클래스 / 내부클래스 장점 / 익명클래스 ) (0) | 2020.07.19 |
---|---|
자바의 정석 기초 (인터페이스의 장점) (0) | 2020.07.19 |
자바의 정석 기초 ( 추상클래스 (abstract class) / 추상메서드 (abstract method) ) (0) | 2020.07.14 |
자바의 정석 기초 ( 매개변수 다형성 / 하나의 배열에 여러 종류 객체 저장 ) (0) | 2020.07.12 |
자바의 정석 기초 ( 참조변수의 형변환 / instanceof 연산자 ) (0) | 2020.07.12 |
댓글