반응형
상수
모든 변수는 상수로 변환 됨 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));
}
}
결과
반응형
'언어 > JAVA' 카테고리의 다른 글
Object 클래스 - 모든 클래스의 최상위 클래스 (0) | 2021.04.22 |
---|---|
여러 인터페이스 구현, 인터페이스의 상속 (0) | 2021.04.19 |
인터페이스를 활용한 dao 구현 (0) | 2021.04.19 |
인터페이스(interface) (0) | 2021.04.19 |
추상 클래스 응용 - 템플릿 메서드 패턴 (0) | 2021.04.18 |