[JAVA][패스트캠퍼스]인터페이스

김주현·2021년 4월 23일
0

인터페이스 역할

  • 인터페이스는 객체를 어떻게 구성해야 하는지 정리한 설계도입니다.
  • 객체의 다형성을 높여줍니다.
  • 변수에 인터페이스가 구현된 서로 다른 구현 객체를 할당해서 사용 가능합니다.
  • 구현 객체를 직접 몰라도 인터페이스 메서드만 알아도 객체 호출이 가능하게 합니다.
  • 객체가 인터페이스를 사용하면 인터페이스 메서드를 반드시 구현해야 하는 제약을 합니다.


인터페이스 참고사이트

인터페이스 선언

  • interface는 접근 지정자로 public을 사용하면 다른 패키지에서도 사용 가능합니다. public을 사용하지 않으면 interface가 위치한 해당 패키지 내에서만 사용 가능합니다.
  • interface의 접근 지정자는 public만 가능합니다. 왜냐하면 interface는 class 설계도 이기 때문에 애초에 존재목적이 공개이기 때문입니다.
  • interface는 객체로 생성할 수 없기 때문에 생성자를 가질 수 없습니다.
  • 구성멤버로 class는 상수필드,정적필드,인스턴스필드,생성자,인스턴스 메서드,정적 메서드
    interface는 상수필드,추상메서드,디폴트메서드,정적메서드 를 가집니다.

인터페이스의 요소

  • 추상메서드
  • 상수
  • 디폴트 메서드
  • 정적 메서드
  • private 메서드

Calc.java

package interfaceex;

public interface Calc {
	
	double PI=3.14;
	int ERROR=-9999999;
	

	int add(int num1,int num2);
	int substract(int num1, int num2);
	int times(int num1,int num2);
	int divide(int num1,int num2);
	
}

Calculator.java

package interfaceex;

public abstract class Calculator implements Calc{

	@Override
	public int add(int num1, int num2) {
		return num1+num2;
	}

	@Override
	public int substract(int num1, int num2) {
		return num1 - num2;
	}

	

}

CompleteCalc.java

package interfaceex;

public class CompleteCalc extends Calculator{

	@Override
	public int times(int num1, int num2) {
		return num1 * num2;
	}

	@Override
	public int divide(int num1, int num2) {
		if(num2 ==0) {
			return ERROR;
		}else {
		return num1 / num2;
	}
	}
	
	public void showInfo() {
		System.out.println("모두 구현하였습니다.");
	}

}

CalcTest.java

package interfaceex;

public class CalcTest {
	public static void main(String[] args) {
		//Calc calc=new CompleteCalc() , Calculator calc=new CompleteCalc() 둘다 가능
		CompleteCalc calc=new CompleteCalc();
		int n1=10;
		int n2=2;
		
		System.out.println(calc.add(n1, n2));
		System.out.println(calc.substract(n1, n2));
		System.out.println(calc.times(n1, n2));
		System.out.println(calc.divide(n1, n2));
		calc.showInfo();
	}

}

타입상속과 형변환

인터페이스를 구현한 클래스는 인터페이스 타입으로 변수를 선언하여 인스턴스를 생성할 수 잇음

인터페이스는 구현코드가 없기 때문에 타입상속이라고도 함

0개의 댓글

관련 채용 정보