Java
10.26.(수) Java-12: 인터페이스
콜라든포비
2022. 10. 30. 23:59
인터페이스
추상클래스를 활용함으로써 실행클래스에서 함수를 재정의를 강제시키는 방법을 알아봤다.
인터페이스란 일종의 추상클래스이지만, 그 성격이 훨씬 추상메소드를 위한 클래스라고 볼 수 있다.
인터페이스는 내부적으로 public static final 상수와 public abstract 함수로 구성되어야한다. 그리고 추상클래스와는 달리 일반 메소드 또한 자기자신만의 멤버변수를 가질 수 없다. 오로지 다른 클래스에게 넘겨줄 수 있는 추상메소드 및 정적 변수와 정적 메소드만 가질 수 있다. 그리고 추상클래스와 마찬가지로 자기 자신의 객체를 만들 수 없다.
package Interface1;
public interface XX {
public int SU=10; // static final 상수
public void disp(); // abstract 메소드
}
package Interface1;
/*
* class <--- class extends
* interface <--- class implements
* interface <--- interface extends
* class <--- interface (이런 경우는 없음)
*/
public class YY implements XX { // disp() 반드시 재정의
private int value;
public YY(int value) {
this.value=value;
}
@Override
public void disp() {
System.out.println("수요일입니다");
System.out.println(SU);
System.out.println(value);
}
public void apple() {
// SU=77; ERROR
value=88;
}
}
package Interface1;
public class Ex01 {
public static void main(String[] args) {
// XX a=new XX(); 자기 자신의 객체 못 만든다
YY b=new YY(100);
b.disp();
System.out.println(XX.SU);
System.out.println(YY.SU);
XX c=new YY(10);
c.disp();
}
}
인터페이스를 쓰는 이유는 관계없는 함수들에게 관계를 자유롭게 만들어줄 수 있기 때문이다. 그리고 다른 클래스와는 다르게 상수와 추상메소드만으로 구성되어있어서 개발 시간을 단축시킬 수 있고, 코드 변경 없이 실행내용과 리턴값을 다양하게 구성할 수 있다는 장점이 있다.