Jam's story

인터페이스 본문

자바

인터페이스

애플쩀 2022. 1. 26. 16:41
인터페이스 

객체의 교환성을 높여주기때문에 다형성을 구현하는데 매우 중요한 역할을 한다 

코드 변경없이 실행내용과 리턴값을 다양화할 수 있다. 

  • 상수와 메소드만으로 구현
  • 객체로 생성할 수 없기 때문에 생성자를 가질 수 없다 
  • 디폴트 메소드와 정적 메소드로 선언 가능 
[public] interface 인터페이스명 {
//상수
타입 상수명 =값 ;
//추상메소드
타입 메소드명(매개변수);
//디폴트메소드 ->인스턴스 메소드
default 타입 메소드명 (매개변수);
//정적메소드
static 타입 메소드명(매개변수);
}
인터페이스에 선언된 상수는 public static final  생략가능

 (public static final) 타입 상수명 =값 ;

 

상수명은 항상 대문자와 언더바를 이용 

 

 

추상메소드는 선언부만 적어준다 
디폴트 메소드 - public 생략가능
[public] default 리턴타입 메소드명(매개변수 ) {}

호출할때는 구현객체가 필요하다. 객체를 인터페이스 변수에 대입한다. 

디폴트 메소드는 인터페이스의 모든 구현 객체가 가지고 있는 기본 메소드이다. 

자신에 맞게 오버라이딩하면 오버라이딩한 메소드가 호출된다. 

 

디폴트 메소드를  구현객체에서 오버라이딩할때! 

인터페이스 안에서 디폴트 메소드는 [public (생략가능)] default 리턴타입 메소드명(매개변수);

구현객체에서 오버라이딩할때 default를 삭제해주고 public 붙이기 

-> public 리턴타팁 메소드명 (매개변수);

 

정적메소드-public 생략가능

 

[public] static 리턴타입 메소드명(매개변수) { }

인터페이스명으로 바로 호출가능 

인터페이스 구현

 

public class 구현클래스명 implements 인터페이스명{

}
  • 인터페이스의 모든 메소드는 public 보다 더 낮은 접근제한을 쓸 수 없다. 
  • public 생략하면 컴파일 오류
  • 만약, 인터페이스의 추상클래스를 구현클래스에서 일부만 구현한다면, 구현클래스는 자동적으로 추상클래스가 된다. 
public abstract class Television implements RemoteControl {
public void turnOn(){ 구현됨 }
public void turnOff(){  구현됨 }
//추상클래스중 한개가 구현이 안됨 = 일부만 구현되면  추상클래스가 되므로 abstract을 붙여준다. 
}
 

 

인터페이스로 구현객체 사용하기 - 인터페이스 변수를 선언하고 구현 객체를 대입 
인터페이스 변수;
변수= 구현객체; 

인터페이스 변수= 구현객체;

 

익명구현객체
인터페이스 변수=new 인터페이스 {
//인터페이스에 선언된 추상 메소드의 실제 메소드 선언
}

package eightInterface;

public class RemoteControlExample {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		RemoteControl rc=new RemoteControl() {
			public void turnOn() {System.out.println("킨다.");}
			public void turnOff() {System.out.println("끈다.");}
			public void setVolume(int volume) {System.out.println("볼륨설정.");}
		};
	}

}

 

 

다중인터페이스 
public class 구현 클래스명 implements 인터페이스 A, 인터페이스 B{}

구현클래스는 인터페이스 A와 B 를 모두 구현해야한다. 

 

 

자동타입변환 

구현객체가 인터페이스타입으로 변환되는 것

 인터페이스 변수=객체 
강제타입변환

구현객체에 있는것을 써야할때 강제타입변환을 한다. 

if( 인터페이스변수 instanceof 클래스명) { 클래스 변수=(클래스) 인터페이스변수}

'자바' 카테고리의 다른 글

인터페이스 상속  (0) 2022.01.26
상속과 인터페이스의 다른점  (0) 2022.01.26
자동타입변환, 강제타입변환  (0) 2022.01.25
상속  (0) 2022.01.24
이것이 자바다 6장 확인문제  (0) 2022.01.24
Comments