

주민이 채집하기를 하는 상황!
주민.a버튼() -> 주민으로 접근하면 a버튼
잠자리채.action -> tool로 접근하면 action으로 접근해야 된다
메서드 이름을 통일하여 사용해야 한다
채집하기 하는 output 기능이 같기 때문에
a버튼과 action() 메서드를 맞춰줘야 한다
주민도 action
도구도 action

인터페이스 Action.java 전체 코드
Action 인터페이스를 만든다

모든 주민은 a버튼을 누를 수 있다
맨 첫번째 사진의 9번 12번 라인 부분을 수정한다
implements : 부모 인터페이스를 자식 클래스에서 재정의 하여 구현하기 위해 사용
Test01.java 전체코드
package class01;
/*
주민이 채집하기를 하는 상황!
주민으로 접근하면 a버튼 -> 주민.a버튼()
tool로 접근하면 action으로 접근해야 된다 -> 잠자리채.action
*/
abstract class 주민 implements Action {
도구 tool;
@Override
public void a버튼() {
tool.a버튼();
}
}
class 햄스터 extends 주민 {
}
class 고양이 extends 주민 {
}
abstract class 도구 implements Action {
}
class 잠자리채 extends 도구 {
@Override
public void a버튼() {
System.out.println("채집하기");
}
}
class 낚시대 extends 도구 {
@Override
public void a버튼() {
System.out.println("낚시하기");
}
}
class 삽 extends 도구 {
@Override
public void a버튼() {
System.out.println("땅파기");
}
}
public class Test01 {
public static void main(String[] args) {
}
}
주민의 a버튼
햄스터가 a버튼 눌러도 도구 사용
고양이가 a버튼 눌러도 도구 사용
== 누가 a를 눌러도 같은 행위를 한다
즉, a버튼은 주민의 것
주민에 오버라이딩하는 이유!
도구의 잠자리채, 낚시대, 삽
밑에 클래스가 무엇인지에 따라 결과가 다름
전체 도구의 특성이 아닌 각 도구의 특성이 된다.
요약 :
주민이 A버튼을 눌러 도구가 나온다.
그 안에서 삽, 잠자리, 낚시대 도구를 선택한다
a버튼을 눌러 도구를 선택할수 있게 되기 때문에
a버튼이라는 Action을 오버라이딩 한다.
package InterfaceTest;
/*
주민이 채집하기를 하는 상황!
주민으로 접근하면 a버튼 -> 주민.a버튼()
tool로 접근하면 action으로 접근해야 된다 -> 잠자리채.action
*/
// 주민
abstract class People implements Action {
String name;
Tool tool;
People(String name){
this.name = name;
this.tool = new Net(); // 주민 객체 생성하면서 잠자리채 부여
}
@Override
public void btnA() {
tool.btnA();
}
}
// 햄스터
class Hamster extends People {
Hamster() {
super("애플");
}
}
// 고양이
class Cat extends People {
Cat(){
super("사이다");
}
}
// 도구
abstract class Tool implements Action {
}
// 잠자리채
class Net extends Tool {
@Override
public void btnA() {
System.out.println("채집하기");
}
}
// 낚시대
class fishingRod extends Tool {
@Override
public void btnA() {
System.out.println("낚시하기");
}
}
// 삽
class Shovel extends Tool {
@Override
public void btnA() {
System.out.println("땅파기");
}
}
public class Test01 {
public static void main(String[] args) {
People datas[] = new People[6];
int index = 0;
datas[0] = new Hamster();
datas[0].btnA();
Tool tooldata = new Net();
tooldata.btnA();
}
}
전체코드!!
'🍏 개발일기' 카테고리의 다른 글
| 이터레이터 | 스레드 (0) | 2025.10.23 |
|---|---|
| 프레임워크 | Set | Map (0) | 2025.10.22 |
| 오버로딩과 오버라이딩 | 동적바인딩 (0) | 2025.10.20 |
| 상속 | super() | 부모클래스 | 자식클래스 (0) | 2025.10.20 |
| 클래스 | 공유자원 (0) | 2025.10.17 |