즐거운프로그래밍

[자바] 인터페이스의 구현(interface)

수수께끼 고양이 2023. 10. 23. 09:26
728x90
반응형

 

인터페이스를 구현한 클래스는 인터페이스에 선언된 모든 추상 메서드를 구현해야 한다.

만약 구현되지 않은 추상 메서드가 있다면 자바 컴파일러는 에러를 출력한다.

인터페이스를 구현하기 위해서는 implement 지시자를 사용한다.

 

1. 인터페이스

import java.util.LinkedList;

interface Weapon { // 클래스 아님, 동작 상호작용임,
    public void attack();
}
// class Weapon {   // 다형성
//    public void attack() {
//    }
//}
// 위처럼 쓰고 아래 class들에 implements 빼고 extends 넣으면 똑같이 동작하지만 동작의 개념이 달라짐

// abstract class Weapon {
//    abstract public void attack();
//}
// 위처럼 쓰면 아래 class들에 implements 빼고 extends 넣으면 상속으로서의 동작이 가능함
// 추상화된 class

 

2. class 클래스 이름 implement 인터페이스 이름

멤버변수;

메서드;

오버라이딩 된 추상 메서드; 

class Sword implements Weapon {
    public void attack() {
        System.out.println("베!");
    }
}
class Gun implements Weapon {
    public void attack() {
        System.out.println("쏴!");
    }
}
class Cane implements Weapon {
    public void attack() {
        System.out.println("때려!");
    }
}

 

public class Character {
    public static void main(String args[]) {
        Sword s = new Sword();
        Gun g = new Gun();
        Cane c = new Cane();

        LinkedList<Weapon> bag =
                new LinkedList<Weapon>();
        bag.add(s);
        bag.add(g);
        bag.add(c);

        Weapon w;
        for(int i=0; i< bag.size(); i++) {
            w = bag.get(i);
            w.attack();
        }
    }
}

 

전체 자바 코딩

 

import java.util.LinkedList;

interface Weapon { // 클래스 아님, 동작 상호작용임,
    public void attack();
}
// class Weapon {   // 다형성
//    public void attack() {
//    }
//}
// 위처럼 쓰고 아래 class들에 implements 빼고 extends 넣으면 똑같이 동작하지만 동작의 개념이 달라짐

// abstract class Weapon {
//    abstract public void attack();
//}
// 위처럼 쓰면 아래 class들에 implements 빼고 extends 넣으면 상속으로서의 동작이 가능함
// 추상화된 class

class Sword implements Weapon {
    public void attack() {
        System.out.println("베!");
    }
}
class Gun implements Weapon {
    public void attack() {
        System.out.println("쏴!");
    }
}
class Cane implements Weapon {
    public void attack() {
        System.out.println("때려!");
    }
}

public class Character {
    public static void main(String args[]) {
        Sword s = new Sword();
        Gun g = new Gun();
        Cane c = new Cane();

        LinkedList<Weapon> bag =
                new LinkedList<Weapon>();
        bag.add(s);
        bag.add(g);
        bag.add(c);

        Weapon w;
        for(int i=0; i< bag.size(); i++) {
            w = bag.get(i);
            w.attack();
        }
    }
}

 

 

 

 

728x90
반응형