실전 자바 강좌 (ver.2018) - 초보부터 개발자 취업까지!! 강의를
개인공부하며 정리하는 용도의 포스팅입니다.
학습목표
- 객체가 다양한 데이터 타입을 가질 수 있는 방법에 대해 학습
인터페이스란?
클래스와 달리 객체를 생성할 수는 없고 클래스에서 구현해야 하는 작업 명세서
인터페이스를 사용하는 이유
많은 이유가 있으나 가장 큰 이유는 객체가 다양한 자료형(타입)을 가질수 있기 때문이다.
public class ImplementClass implements InterfaceA,InterfaceB, InterfaceC, InterfaceD {
public ImplementClass() {
System.out.println("ImplementClass constructor");
}
}
InterfaceA ia = new ImplementClass();
InterfaceB ib = new ImplementClass();
InterfaceC ic = new ImplementClass();
InterfaceD id = new ImplementClass();
인터페이스 구현
class 대신 interface 키워드를 사용하며, extend 대신 implements 키워드를 이용한다.
public interface InterfaceA {
public void funA();
}
public interface InterfaceB {
public void funB();
}
public interface InterfaceC {
public void funC();
}
public interface InterfaceD {
public void funD();
}
public class ImplementClass implements InterfaceA, InterfaceB, InterfaceC, InterfaceD {
@Override
public void funA() {
System.out.println(" -- funA START --");
}
@Override
public void funB() {
System.out.println(" -- funB START --");
}
@Override
public void funC() {
System.out.println(" -- funC START --");
}
@Override
public void funD() {
System.out.println(" -- funD START --");
}
}
- 각
interface
가implements
키워드 다음에 구현되어 있다.
장난감 인터페이스
interface를 이용하면 객체가 다양한 자료형(타입)을 가질 수 있다.
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();
System.out.println();
}
결과
The robot can walk
The robot can run
The robot has no alarm function
The robot has light function
The airplane can not walk
The airplane can not run
The airplane has alarm function
The airplane has no light function
Comments