[자바]인터페이스의 장점및 단점

allnight5·2023년 1월 27일
0

자바 개념정리

목록 보기
27/28

-두 대상(객체)간의 '연결, 대화, 소통'을 돕는 '중간 역할'을 한다.
- 변경에 유리하다. 바뀌어도 구현체만 바꿔서 선언해준다면 참조형은 바꿔주지 않아도 된다.

-선언(설계)와 구현을 분리시킬 수 있게 한다. (선언 껍데기 구현 알맹이)

interface I{
   public void method(); 
}
class B implements I{
	public void method(){
    	System.out.println("B class method");
    }
    public void Test(){
    	System.out.println("B class Test");
    }  
}
class C implements I{
	//오류가 나게되거나 다른취급을 받는다.
    //구현체는 절대. 인터페이스 메소드의 접근제어자보다
    //범위가 작을수없다. 크다면 문제 없다.
	private void method(){
    	System.out.println("C class method Test");
    }
    public void Test25(){
    	System.out.println("C class Test");
    } 
}

인터페이스 없이 직접적인 관계의 두 클래스(A-B)

class A{//B클래스의 메서드 호출
	public Void methodA(B b){
    	b.methodB();
    }    
}
class B{
	public void methodB(){
    	System.out.println("MethodB()");
    }
}
class InterfaceTesrt{
	public void main(String args[]){
    	A a = new A();
        a.mtehodA(new B());
    }
}

간접적인 관계의 두 클래스(A-I-B)

class A{ // B와 관계없음
	public Void methodA(I i){
    	i.method();
    }    
}


interface I{ void methodB();}
class B implements I{
	public void method(){
    	System.out.println("MethodB()");
    }
}

class C implements I{
	public void method(){
    	System.out.println("MethodC()");
    }
}
class InterfaceTesrt{
	public void main(String args[]){
    	A a = new A();
        a.mtehodA(new B());
        a.mtehodA(new C());
    }
}

장점

1.무조건 있어야 하는것이라면 인터페이스를 생성하고 구현체에 구현하게 하며
구현체별로 필요한것을 따로 구현하게 하여 하나의 구현체에 변경이나 문제가
있어도 다른 구현체에는 아무런 문제가 없도록 할 수 있다.(느슨한 결합)

2.(느슨한 결합의 이유)B가 바뀌어도 C는 전혀 알지 못한다 I라는 큰 틀안에 B와 C는 따로 분리되어 포함되어있는것이다.

  1. 개발시간을 단축할수 있다.

    인테페이스에 포함되어있다면 그 메서드만 넣어주면된다.
    하지만 아니라면 실행할 클래스에 가서 그 클래스를 넣어주는 내용으로 변경하고
    다시 돌아와서 사용할 클래스를 넣어주는 작업을 해야한다.

  2. 변경에 유리한 유연한 설계가 가능하다.

단점

  1. 인터페이스를 무조건 걸치고 가니까 바로 가는것보다는 조금 느릴수는 있다.
profile
공부기록하기

0개의 댓글