Basic/Java
Java - 인터페이스(interface)
HappyWeasel
2019. 4. 15. 00:07
인터페이스란?
클래스와 달리 객체를 생성할 수는 없으며, 클래스에서 구현해야하는 작업 명세서이다.
인터페이스를 사용하는 이유?
인터페이스를 사용하는 이유는 많지만, 가장 큰 이유는 객체가 다양한 자료형(타입)을 가질 수 있기 때문이다.
InterfaceA.java
public interface InterfaceA {
public void funA(); //메소드를 정의하지 않는다.
}
InterfaceB.java
public interface InterfaceB {
public void funB(); // 메소드를 정의하지 않는다.
}
Main.java
class interfaceClass implements InterfaceA, InterfaceB { // implements 뒤에 인터페이스 나열한다.
public interfaceClass() {
System.out.println("ImplementClass constrator");
}
@Override
public void funA() { // 해당 인터페이스의 메소드를 정의한다.
System.out.println(" -- funA() -- ");
}
@Override
public void funB() {
System.out.println(" -- funB() -- ");
}
}
public class MainClass {
public static void main(String[] args)
{
InterfaceA ia = new interfaceClass(); // 데이터 타입을 Interface로 불러온다.
InterfaceB ib = new interfaceClass();
ia.funA();
ib.funB();
}
}
예제
Toy.java
public interface Toy {
public void walk();
public void run();
public void alarm();
public void light();
}
ToyAirPlane.java
public class ToyAirPlane implements Toy {
@Override
public void walk() {
System.out.println("The airplane can not walk");
}
@Override
public void run() {
System.out.println("The airplane can not run");
}
@Override
public void alarm() {
System.out.println("The airplane has alarm function");
}
@Override
public void light() {
System.out.println("The airplane has no light function");
}
}
ToyRobot
public class ToyRobot implements Toy {
@Override
public void walk() {
System.out.println("The Robot can walk");
}
@Override
public void run() {
System.out.println("The Robot can run");
}
@Override
public void alarm() {
System.out.println("The Robot has no alarm function");
}
@Override
public void light() {
System.out.println("The Robot has light function");
}
}
Main.java
public class Main {
public static void main(String[] args) {
Toy robot = new ToyRobot();
Toy airplane = new ToyAirPlane();
Toy toys[] = {robot, airplane};
for(int i=0 ; i < toys.length ; i++) {
toys[i].walk();
toys[i].run();
toys[i].alarm();
toys[i].light();
}
}
}