-
인터페이스 (interface)JAVA 2021. 7. 11. 22:57
인터페이스란?
일종의 추상클래스.
추상클래스 처럼 추상메서드를 갖지만 추상화 정도가 더 높고, 추상클래스와 달리 몸통을 갖춘 일반 메서드 또는 멤버변수를 구성원으로
가질 수 없다.
오직 추상메서드와 상수만을 멤버로 가질 수 있으며, 그 외의 다른 어떠한 요소도 허용하지 않는다.
인터페이스의 작성
interface 인터페이스이름{ public static final 타입 상수이름 = 값; public abstract 메서드이름(매개변수목록); }
※인터페이스 멤버들의 제약사항
-모든 멤버변수는 public static final 이어야하며, 이를 생략할 수 있다.
-모든 메서드는 public abstract 이어야하며, 이를 생략 할 수 있다.(static메서드와 디폴트 메서드는 예외 : jdk1.8부터)
인터페이스의 상속
클래스와는 달리 다중상속이 가능하다.
interface Movable{ void move(int x, int y); } interface Attackable { void attack(Unit u); } interface Fightable extends Movable, Attackable {}
인터페이스의 구현
인터페이스도 추상클래스처럼 그 자체로는 인스턴스를 생성할 수 없으며, 추상클래스가 상속을 통해 추상메서드를 완성하는 것처럼,
인터페이스도 자신에 정의된 추상메서드의 몸통을 만들어주는 클래스를 작성하여야 하는데,
키워드는 'implements'를 사용한다.
class 클래스이름 implements 인터페이스이름 { //인터페이스에 정의된 추상메서드를 구현해야 한다. } class Fighter implements Fightable { public void move(int x, int y) {/*내용생략*/} public void attack(Unit u) {/*내용생략*/} }
그러나 만약 구현하는 인터페이스 메서드 중 일부만 구현한다면,
abstract를 붙여서 추상클래스로 선언해야한다.
abstract class Fighter implements Fightable { public void move(int x, int y) {/*내용 생략*/} }
그리고 동시에 상속과 구현을 할 수도 있다.
class Fighter extends Unit implements Fightable { public void move(int x, int y) {/*내용 생략*/} public void attack(Unit u) {/*내용 생략*/} }
728x90반응형'JAVA' 카테고리의 다른 글
[JAVA] ArrayList (0) 2021.08.19 [JAVA] println, print 차이 (0) 2021.08.08 추상클래스(abstract class) (0) 2021.07.03 메소드(함수) 호출 방식 Call by Value & Call by Reference (0) 2021.06.18 [JAVA]Map.Entry 인터페이스 (0) 2021.06.08