일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
Tags
- Do it! 공부단
- nodejs
- Java
- 노드제이에스
- 파이썬
- 배열
- 백준
- 자바
- 운영체제
- 입출력과 사칙연산
- TypeScript
- Do it! 자바스크립트 입문
- 백엔드 개발
- Do it 공부단
- 형변환
- SQL
- Python
- 변수
- 자바스크립트
- JavaScript
- html
- 단계별로 풀어보기
- 타입스크립트
- do it!
- 공부
- 다형성
- 공부단
- 상속
- Oracle
- Node.js
Archives
- Today
- Total
성준이의 공부블로그
[JAVA] 자바 - 인터페이스(interface) 본문
728x90
반응형
SMALL
인터페이스란?
- 모든 메서드가 추상 메서드로 선언됩니다. public abstract
- 모든 변수는 상수로 선언됩니다.
interface 인터페이스 이름 {
public static final float pi = 3.14F;
public void makeSomething();
}
- 자바 8부터 디폴트 메서드(default method)와 정적 메서드(static method) 기능의 제공으로 일부 구현 코드가 있습니다.
인터페이스 정의와 구현하기
선언된 메서드들은 당연히 구현코드가 없습니다.
Calc.java
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
public abstract class Calculator implements Calc {
// 4개의 메서드를 다 구현하지 않기 때문에 abstract가 되어야 합니다.
@Override
public int add(int num1, int num2) {
return num1 + num2;
}
@Override
public int substract(int num1, int num2) {
return num1 - num2;
}
}
CompleteCalc.java
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;
}
return num1 / num2;
}
public void showInfo() {
System.out.println("모두 구현");
}
}
CalculatorTest.java
public class CalculatorTest {
public static void main(String[] args) {
int n1 = 10;
int n2 = 2;
Calc calc = new CompleteCalc();
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));
}
}
출력 결과
12
8
20
5
인터페이스 구현과 형 변환
- 인터페이스를 구현한 클래스는 인터페이스 형으로 선언한 변수로 형 변환할 수 있습니다.
Calc calc = new CompleteCalc();
- 상속에서의 형 변환과 동일한 의미입니다.
- 클래스 상속과 달리 구현 코드가 없으므로 여러 인터페이스를 구현할 수 있습니다. (cf. extends)
- 형 변환되는 경우 인터페이스에 선언된 메서드만을 사용 가능합니다.
728x90
반응형
LIST
'Java' 카테고리의 다른 글
[JAVA] 자바 - 인터페이스의 여러가지 요소 (0) | 2021.12.03 |
---|---|
[JAVA] 자바 - 인터페이스가하는 일과 다형성 구현 (0) | 2021.12.03 |
[JAVA] 자바 - final예약어 (0) | 2021.12.01 |
[JAVA] 자바 - 추상 클래스의 응용 (템플릿 메서드 패턴) (0) | 2021.12.01 |
[JAVA] 자바 - IS-A 관계, HSA-A 관계 (0) | 2021.11.30 |