여러가지의 전자제품이있다. 그 전자제품들은 각자 자율에 맡겨 콘센트와 전력이 제각각이다
그러면 사용하는데 엄청복잡해지고 혼란이 올것이다 그래 가지고 사회적으로 약속을 했는데 이것이 인터페이스이다
실제 프로그래밍에서 어떻게 사용되는지 확인해보자
어떤회사에서 더하기해주는 프로그램을 만들려고한다
하지만 이회사에서는 더하기알고리즘이 어떻게 작동되는지 몰라 외주를 맡기기로하였다
대충 더미데이터만 만들고 외주해온걸 받으면 인스턴스화 하여 값만넣고 프로그램을 만들예정이었다
class DummyCal{
public int sum(int v1,int v2) {
return 3;
}
}
public class InterfaceApp{
pubilc static void main(String[] args){
//더하기 기능이 있는 클래스를 만들어주세요.
DummyCal c = new DummyCal();
system.out.println(c,sum(2,1));
}
}
그래서 일단 이런식으로 더미데이터로 프로그램을 만들어놓았다
외주업체에서 알고리즘을 만들어 주었다
class Realcal{
public double plus(double v1, double v2, double v3) {
return v1+v2+v3;
}
}
그래서 이걸 인스턴스화 하여 프로그램을 만들었다 물론 외주받아온 알고리즘을 확인하지를 않았다
class Realcal{
public double plus(double v1, double v2, double v3) {
return v1+v2+v3;
}
}
public class InterfaceApp{
pubilc static void main(String[] args){
//더하기 기능이 있는 클래스를 만들어주세요.
RealCal c = new RealCal();
system.out.println(c,sum(2,1));
}
}
프로그램을 완성했다. 하지만 제대로 돌아갈일은없다 함수이름도 다르고 변수의 갯수도 다르고 형식도 다르기떄문이다
그리고 오류가 있다고 빨간줄도 안뜰것이다.
그럼 혼란이 올것이다. 이런일은 방지하지위해 약속한것이 인터페이스이다.
인터페이스를 사용하여 프로그램을 만들면 어떻게될까 확인을 해보자
외주에서 인터페이스를 만들어줬다
interface Calculable{
int sum(int v1,int v2);
}
이걸활용하여 프로그램을 만들자
interface Calculable{
int plus(int v1,int v2);
}
public class RealCal implements Calculable{
@Override
public int plus(int v1, int v2) {
return v1+v2;
}
}
참고로 인터페이스를 사용할려면 오버라이딩을 하여야한다.
이런식으로 오버라이딩을 활용하여 함수를 그대로 만들어 어떤구조로 생겻는지 확인이가능하다.
그러면 RealCal클래스를 한번확인해주고 그거를 그대로 사용하면 된다
'개발' 카테고리의 다른 글
@Transactional(readOnly = true) 를 사용하는이유와 주의해야할점 (0) | 2024.06.08 |
---|---|
자바 제네릭이란 무엇인가? (0) | 2024.06.07 |
JSON이란 무엇인가? (0) | 2024.06.06 |
spring 어노테이션 정리 (0) | 2024.06.06 |
자바 extends와 implements의 차이 (0) | 2024.06.05 |