package org.example;
class Main {
public static void main(String[] args) {
전사 a전사 = new 전사();
a전사.이름 = "카니";
a전사.나이 = 22;
a전사.a무기 = new 칼();
a전사.공격();
// 출력v1 : 전사가 칼로 공격합니다.
// 출력v2 : 22살 LearnJava.전사 카니님이 칼로 공격합니다.
a전사.이름 = "초코";
a전사.a무기 = new 활();
a전사.공격();
// 출력v1 : 전사가 활로 공격합니다.
// 출력v2 : 22살 LearnJava.전사 초코님이 활로 공격합니다.
}
}
package org.example;
import javax.xml.namespace.QName;
class Main {
public static void main(String[] args) {
전사 a전사 = new 전사(); //전사()객체와 연결된 a전사 라는 리모컨
a전사.이름 = "카니";//전사 안에 이름이라는 변수안에 값은 카니
a전사.나이 = 22; //전사 안에 나이라는 변수안에 값은 22
a전사.a무기 = new 칼(); //전사안에 a무기라는 변수에 칼()이라는 객체 리모콘을 연결
a전사.공격(); //전사의 공격메소드 호출 -> 전사안에 공격버튼만들기
//공격 메소드
// 출력 : 전사가 칼로 공격합니다.
// 칼 클래스의 메서드가 작동
a전사.이름 = "초코";
a전사.a무기 = new 활(); //전사안에 a무기라는 변수에 활()객체리모콘을 연결
a전사.공격();
// 출력 : 전사가 활로 공격합니다.
// 활 클래스의 메서드가 작동
}
}
class 전사{
String 이름;
int 나이;
무기 a무기; //칼도 활도 리모콘 이 들어가려면 무기 라써야함.
//무기라는 변수 타입? or 무기라는 객체?
//전사안에 공격버튼 만들기
void 공격(){
// 직접 이렇게 하지 않음 . System.out.println("공격하라");
a무기.작동(this.이름, this.나이); //자신이 들고있는 무기한테 공격이라는 일을 위임.
}
}
abstract class 무기 {
String weapon;
//리모콘 버튼 만들기
abstract void 작동(String 이름, int 나이) ;
}
class 칼 extends 무기{
void 작동(String 이름, int 나이){
System.out.println(나이+" 살 " + 이름+ "이가 공격");
}
}
class 활 extends 무기{
void 작동(String 이름, int 나이){
System.out.println(나이+"살 " + 이름+ "이가 공격");
}
}
package org.example;
class Main {
public static void main(String[] args) {
전사 a전사 = new 전사(); //* 전사를 조종할 a전사 리모콘 생성및연결
a전사.이름 = "카니"; //* 이름변수에 초코
a전사.나이 = 22;// *나이 변수에 22
a전사.a무기 = new 칼(); // * 칼을 조종할 a무기 버튼을 a전사리모콘에 생성및 연결
a전사.공격(); // *a전사 리모콘으로 공격 시작
// 출력v1 : 전사가 칼로 공격합니다.
// 출력v2 : 22살 LearnJava.전사 카니님이 칼로 공격합니다.
a전사.이름 = "초코"; // 이름 변수에 초코로 초기화
a전사.a무기 = new 활(); // 활을 조종할 a무기버튼을 a전사 리모콘에 생성및연결
a전사.공격();
// 출력v1 : 전사가 활로 공격합니다.
// 출력v2 : 22살 LearnJava.전사 초코님이 활로 공격합니다.
}
}
//* 전사를 조종할 a전사 리모콘 생성및연결
//전사 클래스에는 이름, 나이, 무기 버튼
class 전사{
String 이름; //* 이름변수에 초코
int 나이; //*나이 변수에 22
// * 칼을 조종할 a무기 버튼을 a전사리모콘에 생성및 연결
무기 a무기; //1번. a무기 버튼을 a전사리모콘에 생성
//* a전사 리모콘으로 공격 시작
void 공격(){
a무기.작동(this.이름, this.나이);
} //1번 칼과 활에게 위임해야하므로 선언만하기
}
//* a전사 리모콘으로 공격 시작
//1번 칼과 활에게 위임해야하므로 선언만하기
//2번 무기클래스에 칼과 활을 조종할 작동리모콘 연결
abstract class 무기{
abstract void 작동(String 이름, int 나이);
}//2번 무기클래스에 칼과 활을 조종할 작동리모콘 연결
//* 칼을 조종할 a무기 버튼을 a전사리모콘에 생성및 연결
//1번. a무기 버튼을 a전사리모콘에 생성
// 출력v2 : 22살 LearnJava.전사 초코님이 활로 공격합니다.
class 칼 extends 무기 { //2번. 칼을 조종
void 작동(String 이름, int 나이){
System.out.println(나이 +"살 전사"+ 이름+"님이 활로 공격합니다." );
}
}
class 활 extends 무기 {
void 작동(String 이름, int 나이){
System.out.println(나이 +"살 전사"+ 이름+"님이 활로 공격합니다." );
}
}