□ 인터페이스
○ 클래스와 달리 객체를 생성할 수 없으며, 클래스에서 구현해야할 작업 명세서임
○ 클래스에서 인터페이스를 구현하는 단계. 이때 인터페이스는 상세한 내역은 없고 껍데기만 있음
○ public class 클래스명 + implements + 인터페이스A, 인터페이스B, 인터페이스C ~
○ 사용이유 : 인터페이스를 사용하는 이유는 많지만 가장 큰 이유는 객체가 다양하 자료형(타입)을 가질 수 있기 때문
예제 1) 인터페이스 2개 생성
package pjt_test;
//인터페이스 생성
public interface InterfaceA {
//인터페이스상에서 메서드 선언만 할뿐 정의는 하지 않음
//정의는 {}활용
public void funA();
}
package pjt_test;
//인터페이스 생성
public interface InterfaceB {
//인터페이스상에서 메서드 선언만 할뿐 정의는 하지 않음
//정의는 {}활용
public void funB();
}
예제 1-1) 인터페이스활용하여 클래스생성 + implements + Override
package pjt_test;
//클래스생성 및 인터페이스 정의
//인터페이스는 다중으로 기재할 수 있음
public class InterfaceClass implements InterfaceA, InterfaceB{
//생성자 생성
public InterfaceClass() {
System.out.println("인터페이스 2개활용하여 생성된 클래스");
}
//인터페이스에서 정의한 메서드 호출
//재정의를 하기에 @override 언어텐션 붙임
@Override
public void funA() {
System.out.println("인터페이스 A 메서드");
}
//인터페이스에서 정의한 메서드 호출
//재정의를 하기에 @override 언어텐션 붙임
@Override
public void funB() {
System.out.println("인터페이스 B메서드");
}
}
예제 1-2) 인터페이스활용하여 생성한 클래스로 객체 생성 + 인터페이스를 객체 타입으로 지정하여 객체생성
package pjt_test;
public class ImplementClass_Main {
public static void main(String[] args) {
//인터페이스에서 선언/정의한 것으로 타입지정 및 객체 생성
InterfaceA ia = new InterfaceClass();
InterfaceB ib = new InterfaceClass();
//타입을 interfaceA로 지정했기에, 인터페이스에서 지정한 메서드만 활용가능
ia.funA();
ib.funB();
}
}
예제 2) 장난감 인터페이스 생성
package pjt_test;
public interface Toy {
//인터페이스상에서 메서드 선언만 할뿐 정의는 하지 않음
//정의는 {}활용
public void walk();
public void run();
public void alarm();
public void light();
}
예제 2-1) 장난감 인터페이스를 활용하여 로봇, 비행기 클래스 생성
package pjt_test;
public class ToyRobot implements Toy{
//생성자
public ToyRobot() {
System.out.println("나는 로봇생성자");
}
@Override
public void walk() {
System.out.println("로봇걷다");
}
@Override
public void run() {
System.out.println("로봇뛰다");
}
@Override
public void alarm() {
System.out.println("로봇알람울리다");
}
@Override
public void light() {
System.out.println("로봇불키다");
}
}
package pjt_test;
public class ToyAirplane implements Toy{
//생성자
public ToyAirplane() {
System.out.println("나는 비행기생성자");
}
@Override
public void walk() {
System.out.println("비행기걷다");
}
@Override
public void run() {
System.out.println("비행기뛰다");
}
@Override
public void alarm() {
System.out.println("비행기알람울리다");
}
@Override
public void light() {
System.out.println("비행기불키다");
}
}
예제 2-1) 인터페이스를 바탕으로 생성된 클래스 2개를 활용하여 객체 생성
package pjt_test;
public class Toy_Main {
public static void main(String[] args) {
//인터페이스에서 선언/정의한 것으로 타입지정 및 객체 생성
Toy Robot_Toy = new ToyRobot();
Toy Airplane_Toy = new ToyAirplane();
Toy toys[] = {Robot_Toy, Airplane_Toy};
for (int i = 0 ; i < toys.length; i++) {
toys[i].walk();
toys[i].run();
toys[i].alarm();
toys[i].light();
System.out.println();
}
}
}
'Java > Java_basic' 카테고리의 다른 글
Step20. 람다식(Lamda) (0) | 2023.09.26 |
---|---|
Step19. 추상 클래스(abstract) (0) | 2023.09.26 |
Step17. 내부클래스와 익명클래스 (0) | 2023.09.25 |
Step16. 오버라이드(Override)와 Super 클래스 (2) | 2023.09.25 |
Step15. 상속과 Private 접근자 (0) | 2023.09.25 |