본문

인터페이스(interface)

반응형

# 인터페이스(interface)


인터페이스

1) 작업명세서라고도 한다.

2) 다형성을 가능하게 한다.


- 문법

1) 추상 메소드와 상수만이 존재한다. (상수는 private으로 선언하면 안된다.)

2) 인터페이스는 객체는 아니지만, 객체 타입으로만 사용한다. (다형성)

3) 구현은 interface를 상속받은 자식 클래스에서 한다.

4) public class 클래스명 { .. } => public interface 인터페이스명 { } 으로 선언한다. ( New->interface를 눌러 생성하면 알아서 되기는 함 =D )

5) 가독성을 위해 interface를 만들 때 인터페이스명은 맨 앞에 대문자 I(아이)로 작성한다.

6) 상속할 때 extends가 아닌 implements라고 선언하고, 다중상속이 가능하다.



- Example


- 인터페이스 : 구현 클래스 is able to 인터페이스

- 해석 : 구현 클래스는 인터페이스 할 수 있다.

- 예제 : 고래는 헤엄칠 수 있다.


Source 01) Animal.java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
package interfaceEx;
 
public class Animal {
    String group;
 
    public Animal() {
        group = "동물";
    }
 
    void showMe() {
        System.out.println(group);
    }
 
}
cs

Source 02) flying.java

1
2
3
4
5
package interfaceEx;
 
public interface flying {    // 날 수 있는
    void fly();
}
cs

Source 03) swimable.java

1
2
3
4
5
package interfaceEx;
 
public interface swimable {    // 헤엄칠 수 있는
    void swim();
}
cs

Source 04) Mammal.java

1
2
3
4
5
6
7
package interfaceEx;
 
public class Mammal extends Animal {
    public Mammal() {
        group = "포유류";
    }
}
cs

Source 05) Birds.java

1
2
3
4
5
6
7
8
package interfaceEx;
 
public class Birds extends Animal {
    public Birds() {
        group = "조류";
    }
 
}
cs

Source 06) Whale.java

1
2
3
4
5
6
7
8
9
10
11
12
13
package interfaceEx;
 
public class Whale extends Mammal implements swimable {
    public Whale() {
        group = "고래";
    }
 
    @Override
    public void swim() {
        System.out.println(group + " 수영 중. 어프!! 어프!!!");
 
    }
}
cs

Source 07) Bat.java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
package interfaceEx;
 
public class Bat extends Birds implements flying {
 
    public Bat() {
        group = "박쥐";
    }
 
    @Override
    public void fly() {
        System.out.println(group + " 날고 있삼.. 슈웅 !! 슈루루룽!!");
 
    }
 
}
cs

Source 08) Sparrow.java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
package interfaceEx;
 
public class Sparrow extends Birds implements flying {
 
    public Sparrow() {
        group = "참새";
    }
 
    @Override
    public void fly() {
        System.out.println(group + " 날고 있삼.. 허우적!! 허우저억!!!!");
 
    }
 
}
cs

Source 09) Penguin.java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
package interfaceEx;
 
public class Penguin extends Birds implements swimable {
 
    public Penguin() {
        group = "펭귄";
    }
 
    @Override
    public void swim() {
        System.out.println(group + " 수영 중. 푸악!!! 푸하아악!!!");
 
    }
 
}
cs

Source 10) Driver.java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
package interfaceEx;
 
public class Driver {
 
    public static void main(String[] args) {
 
        flying flyer01 = new Bat();
        flyer01.fly();
 
        flying flyer02 = new Sparrow();
        flyer02.fly();
 
        swimable[] swimmer = new swimable[2];
 
        swimmer[0= new Whale();
        swimmer[1= new Penguin();
 
        for (swimable animal : swimmer) {
            animal.swim();
        }
    }
 
}
cs

Result)

1
2
3
4
박쥐 날고 있삼.. 슈웅 !! 슈루루룽!!
참새 날고 있삼.. 허우적!! 허우저억!!!!
고래 수영 중. 어프!! 어프!!!
펭귄 수영 중. 푸악!!! 푸하아악!!!
cs




- 출처 및 참고자료 : 스프링 입문을 위한 자바객체지향의 원리와 이해(김종민 저)

반응형

공유

댓글