Java 인터페이스의 장점
by 볼빵빵오춘기인터페이스의 장점
- 두 대상(객체)간의 ‘연결, 대화, 소통’을 돕는 ‘중간 역할’을 한다.
더보기
⇒ 변경에 유리. 만약 기계 부품이 바뀌더라도 인터페이스가 있으면 연결 소통 대화에 도움이 된다.
- 선언(설계 - 껍데기)와 구현(-알맹이)을 분리시킬 수 있게 한다.
더보기
⇒ 껍데기와 알맹이가 붙어있으면 변경에 분리
⇒ 인터페이스를 사용하여 껍데기와 알맹이를 분리 시킴으로써 변경에 유리하도록 변경!!
- 인터페이스 덕분에 연결되어있는 한 쪽 클래스가 변경되어도 나머지 연결되어 클래스는 안바꿀 수 있게 된다.(느슨한 결합)
더보기
⇒ A변경 불필요
예제코드
더보기
class A{
public void method(B b) {
b.method();
}
}
class B{
public void method() {
System.out.println("B클래스의 메서드 ");
}
}
public class InterfaceTest {
public static void main(String[] args) {
A a = new A();
a.method(new B()); // A가 B를 사용(의존)
}
}
→ 클래스 C 추가. 이제 B를 안쓰고 C를 쓸려고 한다.
class A{
public void method(B b) {
b.method();
}
}
class B{
public void method() {
System.out.println("B클래스의 메서드 ");
}
}
public class InterfaceTest {
public static void main(String[] args) {
A a = new A();
a.method(new C()); // A가 C를 사용(의존) //=> 변경부분
}
}
→ B말고 C를 의존하도록 변경함
⇒ 에러표시와 함께 run시켜보면 에러가남
why?
A클래스 method(B b) 부분에 매개변수도 B b가 아니라 C b 이렇게 변경해줘야함.
class A{
public void method(C b) {
b.method();
}
}
class B{
public void method() {
System.out.println("B클래스의 메서드 ");
}
}
class C{
public void method() {
System.out.println("C클래스의 메서드 ");
}
}
public class InterfaceTest {
public static void main(String[] args) {
A a = new A();
a.method(new C()); // A가 B를 사용(의존)
}
}
위와 같이 하면 불편함을 느낀다. 알맹이를 변경하는데 2번의 수정이 필요함.
코드를 다음과 변경한다면?
class A{
public void method(I i) {
i.method();
}
}
// B클래스의 선언과 구현을 분
interface I{
public void method();
}
class B implements I{
public void method() {
System.out.println("B클래스의 메서드 ");
}
}
class C{
public void method() {
System.out.println("C클래스의 메서드 ");
}
}
public class InterfaceTest {
public static void main(String[] args) {
A a = new A();
a.method(new B()); // A가 B를 사용(의존)
}
}
→ a.method(new B()); 가 아닌 C를 넣을려면
class A{
public void method(I i) {
i.method();
}
}
// B클래스의 선언과 구현을 분
interface I{
public void method();
}
class B implements I{
public void method() {
System.out.println("B클래스의 메서드 ");
}
}
class C implements I{
public void method() {
System.out.println("C클래스의 메서드 ");
}
}
public class InterfaceTest {
public static void main(String[] args) {
A a = new A();
a.method(new C()); // A가 B를 사용(의존)
}
}
⇒ 이제는 C가 들어갈 수 있음!
'👩🏻💻 About 프로그래밍 > Java' 카테고리의 다른 글
Java 인터페이스 장점1+2 (feat. 정리하자면) (1) | 2023.11.30 |
---|---|
Java 인터페이스의 장점2 (0) | 2023.11.30 |
Java 인터페이스와 다형성 (0) | 2023.11.30 |
Java 추상클래스의 작성1 (0) | 2023.11.30 |
Java 추상 클래스(abstract class), 추상 메서드(abstract method) (0) | 2023.11.30 |
블로그의 정보
Hello 춘기's world
볼빵빵오춘기