ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 인터페이스(interface)
    JAVA 2023. 12. 8. 15:36

    public , final , static 성격을 가진 [멤버변수]와

    public , abstract 성격을 가진 [메소드] 로만 구성된 단위프로그램이다.

    즉 상수와 추상메소드로만 구성된 단위프로그램

     

    선언 형식

    public final static 자료형 멤버변수명 = 데이터;

    public abstract 리턴형 메소드명();

    💥생성자는 없다.

    객체화 불가 메소드에 static 붙으면 안된다

     

    멤버변수에는 수동초기화 해야한다. 상수는 수동초기화를 안할 수 없다.

     

    인터페이스의 구현

    클래스가 인터페이스의 추상메소드를 물려받아 바디를 붙여 재정의 하는 행위를 말한다.

    이때 물려받은 모든 메소드를 재정의 하면 new에 의해 객체생성이 가능한 일반 클래스가 된다

    허나, 물려받은 모든 메소드를 재정의 안하면 new에 의해 객체생성이 불가능한 추상클래스가 된다.

     

    코딩형식

    [public] [final] 클래스명 implements 인터페이스명 {~}
    			
    				[public] interface A {
    					public  abstract 리턴형 m1(~);    
    						public  abstract 리턴형 m2(~);     
    		}
    											
    			[public] [final] X implements  A {
    						public [final] [static] 리턴형 m1(~){~}
    							public [final] [static] 리턴형 m2(~){~}    
    	}

    인터페이스를 구현한 클래스는 모든 메소드를 재정의 해야 함

     

    인터페이스끼리도 상속이 가능하다.

    	[public] interface A {~}
    
    	[public] interface B extends A {~}

    한 클래스내에서 두개이상의 인터페이스를 사용하고 싶을때 사용한다
    =>(2개이상의 인터페이스 내의 메소드를 불러오고 싶을때)

    상속형식

    	[public] interface A  {
    																		
    						public  abstract 리턴형 m1(~);    
    						public  abstract 리턴형 m2(~);     
    							}
    	[public] interface B {
    					public  abstract 리턴형 m3(~);    
    					public  abstract 리턴형 m4(~);     
    	}
    												
    	[public] [final] X implements  A {
    		public [final] [static] 리턴형 m1(~){~}
    		public [final] [static] 리턴형 m2(~){~}    
    }

    여기서,

    [A인터페이스]는 [B인터페이스]의 멤버변수와 메소드를 소유한것이나 마찬가지다.

    A인터페이스를 구현하는 클래스는 B인터페이스의 메소드와 A인터페이스의 메소드를 모두 오버라이딩 해야

    객체화가 가능한 일반클래스가 된다,,

    인터페이스 사용 목적

    인터페이스에 정의한 추상메소드를 인터페이스를 구현한 클래스에서

    반드시 모두 재정의하여 사용하므로써 클래스의 메소드명 제작 명세표역할을 한다.

    그러므로 각 클래스의 메소드명의 통일성유지한다.

    그러므로 프로젝트 전체의 유지보수성을 높인다.

     

    인터페이스 특징

    • 멤버변수앞에 public final static 붙지않으면 컴파일할때 컴파일러가 자동으로 붙인다.
    • 프로그래밍 습관상 되도록 public final static 을 명시하는것이 좋다.
    • 인터페이스의 멤버변수는 static성격이므로 new에 의한 객체생성없이 "인터페이스명.멤버변수명" 으로 호출가능.
    • 인터페이스의 멤버변수는 반드시 선언과 동시에 반드시 수동초기화 해야함.

    인터페이스가 소유한 추상메소드 앞에 public abstract 가 붙지 않아도 public abstract의 성질을 가진다.

     

    ▶추상메소드 앞에 public abstract 붙지않으면 컴파일할때 컴파일러가 자동으로 붙인다.

    ▶인터페이스를 구현한 클래스는 메소드를 재정의(override)할때 반드시 public 접근지정자를 붙여야 한다.

    클래스끼리는 단일상속만 가능하다 즉 클래스끼리는 다중상속불가능

     

    인터페이스를 구현한 클래스의 객체화

    <방법1>

    인터페이스구현클래스명 변수명 = new 인터페이스구현클래스생성자명(~);

    ----------------------------------------------

    오버라이딩 메소드 호출가능

    고유메소드 호출가능

    인터페이스내의 멤버변수 호출가능

    ----------------------------------------------------------------------------------

    <방법2>

    인터페이스명 변수명 = new 인터페이스구현클래스생성자명(~);

    -----------------------------------------------------------

    오버라이딩 메소드 호출가능

    고유메소드는 호출 불가

    인터페이스내의 멤버변수 호출가능

    'JAVA' 카테고리의 다른 글

    자바 기본 API - ArrayList  (0) 2023.12.11
    자바에서 기본 제공하는 API (배열)  (1) 2023.12.08
    상속  (1) 2023.12.07
    클래스(Class)  (2) 2023.12.05
    반복문  (1) 2023.12.05
Designed by Tistory.