본문 바로가기
언어/JAVA

인터페이스의 요소

by step 1 2021. 4. 19.
반응형

상수

모든 변수는 상수로 변환 됨 public static final

 

추상 메서드

모든 선언된 메서드는 추상 메서드 public abstract

 

디폴트 메서드 (자바 8이후)

  • 구현을 가지는 메서드, 인터페이스를 구현하는 클래스들에서 공통으로 사용할 수 있는 기본 메서드
  • default 키워드 사용
  • 구현 하는 클래스에서 재정의 할 수 있음
  • 인터페이스를 구현한 클래스의 인스턴스가 생성 되어야 사용 가능함

정적 메서드 (자바 8이후)

인스턴스 생성과 상관 없이 인터페이스 타입으로 사용할 수 있는 메서드

 

private 메서드 (자바 9이후)

  • 인터페이스를 구현한 클래스에서 사용하거나 재정의 할 수 없음
  • 인터페이스 내부에서만 사용하기 위해 구현하는 메서드
  • default 메서드나 static 메서드에서 사용함
package ch34;

import java.util.Iterator;

public interface Calc {

	double PI = 3.14;
	int ERROR = -999999;
	
	int add(int num1, int num2);
	int substract(int num1, int num2);
	int times(int num1, int num2);
	int divide(int num1, int num2);
	
	default void description() {
		System.out.println("정수의 사칙연산을 제공합니다.");
		myMethod();
	}
	
	static int total(int[] arr) {
		
		int total = 0;
		for (int i : arr) {
			total += i; 
		}
		
		myStaticMethod();
		return total;
	}
	
	// 재정의 할 수 없음
	private void myMethod() {
		System.out.println("myMethod");
	}
	
	// 재정의 할 수 없음
	public static void myStaticMethod() {
		System.out.println("myStaticMethod");
	}
}

 

package ch34;

// 모두 구현하지 않을 경우 추상 클래스가 된다
public abstract class Calculater implements Calc{

	@Override
	public int add(int num1, int num2) {
		// TODO Auto-generated method stub
		return num1 + num2;
	}

	@Override
	public int substract(int num1, int num2) {
		// TODO Auto-generated method stub
		return num1 - num2;
	}

	

	
}

 

package ch34;

public class CompleteCalc extends Calculater{

	@Override
	public int times(int num1, int num2) {
		// TODO Auto-generated method stub
		return num1 * num2;
	}

	@Override
	public int divide(int num1, int num2) {
		if (num2 == 0) {
			return ERROR;
		}
		
		return num1/num2;
	}

	public void showInfo() {
		
		System.out.println("모두 구현했습니다.");
	}

	@Override
	public void description() {
		System.out.println("CompleteCalc overriding");
	}
	
	
	
}

 

package ch34;

public class CalculaterTest {

	public static void main(String[] args) {
		
		int num1 = 10;
		int num2 = 2;
		
		Calc calc = new CompleteCalc();
		System.out.println(calc.add(num1, num2));
		System.out.println(calc.substract(num1, num2));
		System.out.println(calc.times(num1, num2));
		System.out.println(calc.divide(num1, num2));
		
		calc.description();
		
		
		int[] arr = {1,2,3,4,5};
		System.out.println(Calc.total(arr));
		
	}
}

 

결과

반응형