본문 바로가기

프로그래밍/Java

Java_인터페이스

인터페이스 

추상클래스와 마찬가지로 인스턴스를 생성할 수 없다.

인터페이스는 다른 인터페이스를 'extends' 키워드로 상속받을 수 있고, 인터페이스의 구현은 'implements' 키워드를 사용한다.

인터페이스는 다중 상속이 가능하다.

기능(메소드)의 구현을 강제함으로써 표준, 약속 강제성 있는 규칙을 유도할 수 있다.

인터페이스를 구현한 다양한 객체를 사용함 (다형성)

 

interface 인터페이스이름 {
    public static final float pi = 3.14F;
    public void makeSomething();
}

→ 인터페이스는

모든 메서드가 추상 메서드로 선언된다. public abstract

모든 변수는 상수로 선언된다. public static final

 

- interface 예제

 

 

Calc 클래스

1
2
3
4
5
6
7
8
9
10
package ch03;
 
public interface Calc {
 
    int add(int n1, int n2);
    public abstract int substract(int n1, int n2);
    public abstract int times(int n1, int n2);
    public abstract double devide(int n1, int n2);
    
}
cs

→ 인터페이스에서 쓰이는 변수들은 모두 추상 메서드이다. 그렇기 때문에 'public abstract'를 생략하여 적어도 된다.

 

 

Calculator 클래스

1
2
3
4
5
6
7
8
9
10
11
12
package ch03;
 
public abstract class Calculator implements Calc {
 
    @Override
    public double devide(int n1, int n2) {
        if (n2 == 0) {
            System.out.println("0으로 나눌 수 없습니다.");
        }
        return 0;
    }
}
cs

→ 인터페이스를 구현할 때는 'implements'키워드를 사용해야 한다.

→ 추상클래스와 인터페이스의 다른 점은 구현을 해야할 때 추상클래스는 모든 메서드를 구현해주어야 하지만,

인터페이스는 상수로 선언되어 있기 때문에 골라서 구현을 해주고 싶은 메서드만 구현이 가능하다.

(그래서 위 코드에서는 0으로 나누면 ArithmeticException이 발생하기 때문에 devide 메서드만 따로 구현해주었다.)

 

 

CompleteCalc 클래스

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
32
33
34
35
36
37
38
39
40
41
package ch03;
 
public class CompleteCalc extends Calculator {
 
    public void showInfo() {
        System.out.println("계산 완료");
    }
 
    @Override
    public int add(int n1, int n2) {
        return n1 + n2;
    }
 
    @Override
    public int substract(int n1, int n2) {
        return n1 - n2;
    }
 
    @Override
    public int times(int n1, int n2) {
        return n1 * n2;
    }
    
    //코드 테스트
    public static void main(String[] args) {
    
        Calc calc=new CompleteCalc();
        
                calc.devide(10);
        
        if(calc instanceof CompleteCalc) {
            ((CompleteCalc) calc).showInfo();
        }
        
    } //end of main
    
//end of class
 
<결과 화면>
0으로 나눌 수 없습니다.
계산 완료
cs

→ 다형성을 이용하여 Calc클래스로 CompleteCalc클래스 객체를 생성해주고 0으로 나눈 결과 값을 출력하도록 하였다. 

'프로그래밍 > Java' 카테고리의 다른 글

Java_추상 클래스(abstract class)  (0) 2023.02.14
Java_Object클래스  (0) 2023.02.14
Java_상속과 다형성  (0) 2023.02.14
Java_배열, 객체 배열  (0) 2023.02.12
Java_static변수와 메서드  (0) 2023.02.12