2013.10.10 14:50

인터페이스


인터페이스는 추상 메소드와 상수 정의로 이루어진 단위이다. 즉, 오로지 상수와 추상 메소드만 정의할 수 있다.


다음과 같은 특징이 있다.

- 다중 상속이 가능

- 모든 메소드가 추상 메소드로 이루어져 있음

- interface 키워드를 사용하여 정의

- implements 키워드를 사용하여 상속

- 인터페이스 내부의 추상 메소드 앞에는 abstract를 사용하지 않음


인터페이스를 만드는 이유

- 다중 상속이 가능하므로, 단일 상속의 한계를 보완

- 클래스 명세표를 만듬


형식

public interface 인터페이스명 extends 인터페이스명,인터페이스명...{ // extends 이하는 다중 상속을 의미

//상수선언

//메소드선언

}


예제 1. 인터페이스의 다중 상속


package java_1010;


interface Speed {

public int INIT_SPEED = 60;


public void speedUp(int inc);


public void speedDown(int dec);

}


interface Direction {

public void turn(boolean b);

}


class Car2 implements Speed, Direction {

int speed = INIT_SPEED;


@Override

public void speedUp(int inc) {

// TODO Auto-generated method stub

speed += inc;


}


@Override

public void speedDown(int dec) {

// TODO Auto-generated method stub

speed -= dec;


}


public void display() {

System.out.println("현재 속도는  " + speed + "입니다.");

}


@Override

public void turn(boolean b) {

// TODO Auto-generated method stub

if (b == true) {

System.out.println("현재 방향은  왼쪽입니다.");

} else {

System.out.println("현재 방향은 오른쪽입니다.");

}

}

}


public class CarExe {

public static void main(String[] args) {

Car2 obj = new Car2();

obj.speedUp(20);

obj.turn(true);

obj.display();


obj.speedDown(15);

obj.turn(false);

obj.display();


obj.speedDown(10);

obj.turn(false);

obj.display();

}


}



예제 2. 인터페이스의 구현


package java_1010;


interface Bird{

public long speed =80l;

public void fly();

}

interface Horse{

public void run();

}

interface Fish{

public void swim();

}

interface ChangeSpeed{

public void speedUp(int a);

public void speedDown(int a);

}


class ClassPaga implements Bird, Horse, Fish, ChangeSpeed{

long currentSpeed = speed;


@Override

public void run() {

// TODO Auto-generated method stub

System.out.println(currentSpeed + "Km/h의 속도로 커다란 평원을 달립니다.");

}


@Override

public void fly() {

// TODO Auto-generated method stub

System.out.println(currentSpeed+ "Km/h의 속도로 하늘을 날아다닙니다.");

}


@Override

public void swim() {

// TODO Auto-generated method stub

System.out.println(currentSpeed+ "Km/h의 속도로 바다를 헤엄칩니다.");

}


@Override

public void speedUp(int a) {

// TODO Auto-generated method stub

currentSpeed += a;

}


@Override

public void speedDown(int a) {

// TODO Auto-generated method stub

currentSpeed -= a;

}

}


public class Pagasus {


public static void main(String[] args) {

// TODO Auto-generated method stub

ClassPaga obj = new ClassPaga();

obj.speedUp(10);

obj.fly();

obj.speedDown(20);

obj.run();

obj.speedDown(10);

obj.swim();


}


}



Posted by saudades

댓글을 달아 주세요