//인터페이스
//클래스와달리 객체를 생설항 수는 없으며 클래스에서 구현해야하는 작업명세서이다.
//인터페이스를 사용하는 이유는 ㄴ많지만 주된이유는 바로 객체가 다양한 자료형(타입)을 가질 수 있기 때문이다.
//MainClass.java
public class MainClass {
public static void main(String [] args) {
InterfaceA ia = new InterfaceClass();
InterfaceB ib = new InterfaceClass();
ia.funA();
ib.funB();
System.out.println();
// Toy 인터페이스 예제
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();
}
}
}
//implements --> 인터페이스를 구현
//상속과달리 많은것을 사용가능, 다형성?
// InterfaceA, InterfaceB에서 선언만 해두었기때문에 InterfaceClass 에서 빨간줄이나온다.
//InterfaceClass.java
public class InterfaceClass implements InterfaceA, InterfaceB {
//여기서 재구현을하여 빨간줄을 없엔다.전구로 자동으로 생성가능하고, 손으로 입력 해도 된다.
public InterfaceClass() {
System.out.println(" --- Inetfaceclass constructor --");
}
@Override
public void funA() {
System.out.println(" --- Inetfaceclass constructor A--");
}
@Override
public void funB() {
System.out.println(" --- Inetfaceclass constructor B--");
}
}
//class 대신 interface키워드를 사용한다. 생성시 interface 선택
//InterfaceA.java
public interface InterfaceA {
//선언만해둠
public void funA();
}
//class 대신 interface키워드를 사용한다. 생성시 interface 선택
//InterfaceB.java
public interface InterfaceB {
//선언만해둠
public void funB();
}
예제. Toy 인터페이스
//Toy 인터페이스 생성
//Toy.java
public interface Toy {
public void walk();
public void run();
public void alarm();
public void light();
}
//Toy 인터페이스
//ToyAirplane.java
public class ToyAirplane implements Toy {
@Override
public void walk() {
System.out.println("The airplane can net 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.");
}
}
//Toy 인터페이스
//ToyRobot.java
public class ToyRobot implements Toy {
@Override
public void walk() {
System.out.println("The airplane can walk.");
}
@Override
public void run() {
System.out.println("The airplane can run.");
}
@Override
public void alarm() {
System.out.println("The airplane has no alarm function.");
}
@Override
public void light() {
System.out.println("The airplane has light function.");
}
}
'Develop > JAVA' 카테고리의 다른 글
JAVA 람다식 (0) | 2023.10.17 |
---|---|
JAVA 추상클래스 (0) | 2023.10.17 |
JAVA 내부(inner) 클래스와 익명(anonymous) 클래스 (0) | 2023.10.17 |
JAVA 상속 특징 (0) | 2023.10.17 |
JAVA 상속 (0) | 2023.10.17 |