🍏 개발일기

모동숲으로 implement/interface 이해하기

보배 진 2025. 10. 22. 09:38

 

 

 

주민이 채집하기를 하는 상황!
주민.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();
	}
}

 

전체코드!!