Java

인터페이스에 대한 고찰

H_u 2024. 4. 25. 16:38
728x90
반응형
SMALL

💡 학습 목표

  1. 인터페이스를 통한 동물 경주 게임 설계 해보기
  2. RaceParticipant 와 Turtle에 관계는?
  3. 연극에 로미오라는 역할 그리고 배우1과 배우2

 

 

1. 인터페이스를 통한 동물 경주 게임 설계 해보기

여기에 거북이, 토끼 클래스가 존재합니다. 어느 날 둘이 경주 게임에 참가하자고 합의를 하였습니다. 단, 참가를 하기 위해서는 본인에 이름과 경주 속도를 알려주는 장치를 달아야 중개가(일종에 스펙) 가능하다고 합니다. 이 상황을 코드로 작성해 봅시다.

package basic.ch22;

 

public interface RaceParticipant {

 

String getName();

int getSpeed();

}

 

package basic.ch22;

 

public class Turtle implements RaceParticipant {

 

private final int speed = 2;

 

@Override

public String getName() {

return "깡총깡총거북이";

}

 

@Override

public int getSpeed() {

return speed;

}

 

}

package basic.ch22;

 

public class Rabbit implements RaceParticipant {

 

private final int speed = 10;

 

@Override

public String getname() {

// TODO Auto-generated method stub

return "엉금엉금 토끼?";

}

 

@Override

public int getSpeed() {

// TODO Auto-generated method stub

return speed;

}

 

}

 

 

3. 연극에 로미오라는 역할 그리고 배우1과 배우2

더블 캐스팅(Double Casting) : 주연 역할을 두 명의 배우가 번갈아 가며 연기하여, 공연의 부담을 분담하거나 다양한 해석을 관객에게 제공할 수 있는 장점이 있습니다.

 

package basic.ch22;

 

public interface Romeo {

 

void performAsRomeo();

}

 

package basic.ch22;

 

public class Actor implements Romeo {

 

String name;

public Actor(String name) {

this.name = name;

}

@Override

public void performAsRomeo() {

// TODO Auto-generated method stub

System.out.println(name + "가 오호 ~ 줄리엣 연극을 합니다");

}

}

 

package basic.ch22;

 

public class Student implements Romeo {

 

String name;

public Student(String name) {

this.name = name;

}

 

@Override

public void performAsRomeo() {

// TODO Auto-generated method stub

System.out.println("학교 축제에서 " + name + "이 연극을 합니다");

}

 

}

 

package basic.ch22;

 

public class RomeoTest {

 

public static void main(String[] args) {

 

Actor actor = new Actor("정우성");

actor.performAsRomeo();

 

Student student = new Student("야스오");

student.performAsRomeo();

}

 

 

}

 

728x90
반응형
SMALL

'Java' 카테고리의 다른 글

String, StringBuffer 클래스  (1) 2024.04.26
Object 클래스  (0) 2024.04.25
중요한! 인터페이스(interface)  (0) 2024.04.25
추상 클래스(abstract class)  (0) 2024.04.25
다형성(Polymorphism)의 활용  (0) 2024.04.24