객체지향 프로그래밍: 인터페이스

김수정·2020년 6월 17일
0

Java 언어적 문법

목록 보기
5/8

인터페이스란?

메소드 시그니처와 상수만 정의하는 설계도 역할을 합니다.
오류는 있을지언정 동일한 이름과 동일한 형식으로 개발하도록 강제할 수 있습니다.
자바는 한 개의 부모 클래스만 상속받을 수 있지만 인터페이스는 여러개 가능합니다. e.g) implements car, vehicle

// car.java
public interface Car {
    public int getSpeed();
    public boolean accelerate();
}

// matiz.java
public class Matiz implements Car {
    int speed;

    @Override
    public int getSpeed() {
        return speed;
    }

    @Override
    public boolean accelerate() {
        speed += 20;
        return false;
    }
}

// Drive.java
public class Drive {
    public static void main(String[] args) {
        Car matiz = new Matiz();

        drive(matiz, "Matiz");
    }

    private static void drive(Car car, String name) {
        System.out.println(name);
        for (int i = 0; i < 10; i++) {
            car.accelerate();
            System.out.println(i + ":" + car.getSpeed());
        }
    }
}

사용방법

메소드를 설계할 때는 파라미터와 리턴형식만 설계하고 구현내용은 적지 않습니다.
변수를 설계할 때는 내용까지 적어줍니다.

interface Calculable {
    double PI = 3.14;
    int sum(int v1, int v2);
}

다형성

다양한 기능을 가지고 있는 클래스로 생성했지만 인스턴스의 형을 인터페이스로 한정함으로써,
필요한 기능만 사용하고 집중이 가능해집니다.

interface Calculable {
    double PI = 3.14;
    int sum(int v1, int v2);
}
interface Printable {
    void print();
}
class DummyCal implements Calculable {
    public int sum(int v1, int v2) {
        return 3;
    }
}

class RealCal implements Calculable, Printable {

    @Override
    public int sum(int v1, int v2) {
        return v1 + v2;
    }

    @Override
    public void print() {
        System.out.println("This is RealCal!!");
    }
}

public class InterfaceApp {
    public static void main(String[] args) {
        Calculable c = new RealCal();
        System.out.println(c.sum(2, 1));
//        c.print();
        System.out.println(c.PI);
    }
}

okdevtv_인터페이스
생활코딩_인터페이스

profile
정리하는 개발자

0개의 댓글