ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Interface의 개념
    JAVA/Interface 2020. 10. 11. 00:59

    Interface
       - 추상 메소드로만 이루어져 있다."{}"가 없다. 

       - 아래처럼 중괄호가 없고 메소드의 프로토타입만 선언되어 있으면 추상 메소드이다. 
         예) public abstract void speedDown(int speed);

       - 추상메소드를 사용하는 이유는 앞으로 추가되거나 구현되어야하는 기능의 설계 역할을 하며
         실제 기능은 구현하지 않고 메소드 프로토타입만 구현하는 것을 말한다.

       - 추상 메소드는 건축물에서 구조를 이루는 철근과도 같고 설계도와 같은 역할을 한다.
       
       - 외부에 공개할 메소드를 등록하는 목적으로도 사용된다.

       - 하나의 컴포넌트가 다양한 형태로 구현되어야 할 경우 인터페이스를 이용하면 콤포넌트의
         사용법이 상당히 단순해진다.

       - 인터페이스를 구현한 클래스는 인터페이스 상에 있는 추상 메소드를 전부 구현해야 한다.

       - 인터페이스상에 있는 메소드를 하나라도 구현하지 않으면 인터페이스를 상속받은 클래스는 
         추상클래스가 된다.
       
       - A a_obj = new A(); 인터페이스는 객체를 만들 수 없다. 따라서 반드시 그 인터페이스를
                                  구현한 클래스의 객체를 받아 사용하게 되어 있다.
     
         A memo;            //  A인터페이스 형 참조 변수 memo 선언
         memo = new C1();   // C1은 A라는 인터페이스를 전부 구현한 클래스이다.
       
       - 인터페이스에 선언된 메소드를 호출하면 그 인터페이스를 구현한 클래스의 메소드가 
         자동으로 호출된다.

       - 인터페이스를 이용하면 인터페이스를 구현하는 클래스들은 메소드의 형태가 같기 때문에 
         같은 메소드명을 이용하면서 다양한 구현을 할 수 있다.
         이것은 마치 My-SQL용으로 개발된 프로그램을 Oracle 용으로 변경시에 JDBC 드라이버만
         변경하면 프로그램이 작동하는 것과 같은 이치이다.

     

    1. Interface의 구현

    Inter.java

    InterImpl.java

    프로그램 실행결과

    소스 파일

    Inter.java
    0.00MB
    InterImpl.java
    0.00MB

     

     

    2 - (1). 인터페이스의 참조
       - 인터페이스를 이용하여 메소드만 호출하는 경우는 인터페이스 타입을 그대로 사용한다.
       - 각 클래스의 멤버 변수에 접근하는 경우는 그 클래스 타입으로 형 변환을 해주어야 한다.
       - 인터페이스에 변수를 선언한다면 주로 상수를 선언한다.
       - 메소드만 선언되는 경우가 대부분이다.
       - 인터페이스 타입  객체 = new 인터페이스 구현 클래스 

    프로그램 실행결과

    소스 파일

    IR2.java
    0.00MB

     

     

    2 - (2). 인터페이스의 참조 

    Myinfointer.java

    Myinfo.java

    Myinfouse.java

    프로그램 실행결과

    소스 파일

    Myinfo.java
    0.00MB
    Myinfointer.java
    0.00MB
    Myinfouse.java
    0.00MB

     

     

    2 - (2). 인터페이스의 참조 

    인터페이스에도 abstract를 쓸 수 있지만 안쓰는 것이 일반적이다.
    ① 직접 객체생성 불가
    ② 미구현 함수는 모두 구현해야 한다.
    ③ 구현 함수는 앞에 반드시 퍼블릭 붙인다.

     

     

     

     

    인터페이스를 사용하면, 권한 등에 제한을 줄 수 있다.

    아래의 예제를 보자.

    프로그램 실행결과

    소스 코드

    더보기
    //	관리자 인터페이스
    interface MainAdmin
    {
    	public void AdminA();
    	public void AdminB();
    	public void AdminC();
    	public void AdminD();
    }
    
    interface ASite{public void AdminA();}	//	A지점 관리자 인터페이스
    interface BSite{public void AdminB();}	//	B지점 관리자 인터페이스
    interface CSite{public void AdminC();}	//	C지점 관리자 인터페이스
    interface DSite{public void AdminD();}	//	D지점 관리자 인터페이스
    
    class ASite1 extends Franchise implements ASite {}
    class BSite1 extends Franchise implements BSite {}
    class CSite1 extends Franchise implements CSite {}
    class DSite1 extends Franchise implements DSite {}
    
    class Franchise implements MainAdmin
    {
    	public void AdminA()
    	{
    		System.out.println("A지점 관리자 입니다.");
    	}
    	public void AdminB()
    	{
    		System.out.println("B지점 관리자 입니다.");
    	}
    	public void AdminC()
    	{
    		System.out.println("C지점 관리자 입니다.");
    	}
    	public void AdminD()
    	{
    		System.out.println("D지점 관리자 입니다.");
    	}
    }
    
    public class AdminInterfaceTest {
    	public static void main(String[] args) {
    		
    		ASite a1 = new ASite1();
    		a1.AdminA();
    		//a1.AdminB();	//	호출 불가. 에러 발생
    		//a1.AdminC();	//	호출 불가. 에러 발생
    		//a1.AdminD();	//	호출 불가. 에러 발생
    	}
    }

     

    'JAVA > Interface' 카테고리의 다른 글

    상속을 이용하여 도형의 넓이 구하기  (0) 2020.10.11
    익명  (0) 2020.10.11
    상속과 다중 인터페이스  (0) 2020.10.11
    다중 상속  (0) 2020.10.11

    댓글

Designed by Tistory.