6/2

ONLYS2545·2023년 6월 8일
0

질럿 클래스 만들기
package ex05.ch01;

public class Zealot {
    String name;
    int hp;
    int attack;

    public Zealot(String name, int hp, int attack) {
        this.name = name;
        this.hp = hp;
        this.attack = attack;
    }

}
드라군 클래스 만들기
package ex05.ch01;

public class Dragoon {
    String name;
    int hp;
    int attack;

    public Dragoon(String name, int hp, int attack) {
        this.name = name;
        this.hp = hp;
        this.attack = attack;
    }

}
App.java파일에서 실행해보기
package ex05.ch01;


public class App {

    static void attack(Zealot u1, Zealot u2) {
        u2.hp = u2.hp - u1.attack;
        System.out.println(u2.name + "이 공격당했습니다");
        System.out.println(u2.name + "의 남은 hp : " + u2.hp);
    }

    static void attack(Zealot u1, Dragoon u2) {
        u2.hp = u2.hp - u1.attack;
        System.out.println(u2.name + "이 공격당했습니다");
        System.out.println(u2.name + "의 남은 hp : " + u2.hp);
    }

    static void attack(Zealot u1, DarkTempler u2) {
        u2.hp = u2.hp - u1.attack;
        System.out.println(u2.name + "이 공격당했습니다");
        System.out.println(u2.name + "의 남은 hp : " + u2.hp);
    }

    static void attack(Dragoon u1, Zealot u2) {
        u2.hp = u2.hp - u1.attack;
        System.out.println(u2.name + "이 공격당했습니다");
        System.out.println(u2.name + "의 남은 hp : " + u2.hp);
    }

    static void attack(Dragoon u1, Dragoon u2) {
        u2.hp = u2.hp - u1.attack;
        System.out.println(u2.name + "이 공격당했습니다");
        System.out.println(u2.name + "의 남은 hp : " + u2.hp);

    }

    static void attack(Dragoon u1, DarkTempler u2) {
        u2.hp = u2.hp - u1.attack;
        System.out.println(u2.name + "이 공격당했습니다");
        System.out.println(u2.name + "의 남은 hp : " + u2.hp);

    }

    static void attack(DarkTempler u1, Zealot u2) {
        u2.hp = u2.hp - u1.attack;
        System.out.println(u2.name + "이 공격당했습니다");
        System.out.println(u2.name + "의 남은 hp : " + u2.hp);
    }

    static void attack(DarkTempler u1, Dragoon u2) {
        u2.hp = u2.hp - u1.attack;
        System.out.println(u2.name + "이 공격당했습니다");
        System.out.println(u2.name + "의 남은 hp : " + u2.hp);
    }

    static void attack(DarkTempler u1, DarkTempler u2) {
        u2.hp = u2.hp - u1.attack;
        System.out.println(u2.name + "이 공격당했습니다");
        System.out.println(u2.name + "의 남은 hp : " + u2.hp);
    }

    public static void main(String[] args) {
        Zealot z1 = new Zealot("질럿1", 100, 10);
        Zealot z2 = new Zealot("질럿2", 100, 10);
        Dragoon d1 = new Dragoon("드라군1", 100, 5);
        Dragoon d2 = new Dragoon("드라군2", 100, 5);
        DarkTempler dt1 = new DarkTempler("다크템플러1", 100, 20);
        DarkTempler dt2 = new DarkTempler("다크템플러2", 100, 20);

        // 질럿 -> 질럿 공격
        attack(z1, z2);
        // 질럿 -> 드라군 공격
        attack(z1, d1);
        // 질럿 -> 다크 공격
        attack(z1, dt1);

        // 드라군 -> 질럿 공격
        attack(d1, z1);
        // 드라군 -> 드라군 공격
        attack(d1, d2);
        // 드라군 -> 다크 공격
        attack(d1, dt1);

        // 다크 -> 질럿 공격
        attack(dt1, z1);
        // 다크 -> 드라군 공격
        attack(dt1, d1);
        // 다크 -> 다크 공격
        attack(dt1, dt2);

        // 오버로딩 체험하기
        System.out.println();
        System.out.println(1);
        System.out.println(1.0);
        System.out.println('가');
        System.out.println("문자열");
        System.out.println(true);

    }
}

오버로딩의 한계 - > 경우의 수가 많아지면 사용하기 어려움

상속 -> 타입 일치성(다형성)

스택은 다른 스택에 접근 못한다.

스택은 자신의 힙 영역에는 접근이 가능하다.

메서드 내부에서 만든 변수는 지역변수
클래스 내부에서 만든 변수는 힙변수
메서드 내부에서 -> 힙변수 접근이되요.
메서드 내부에서 다른 메서드 변수 접근은 안되요.
메서드 내부에서 다른 힙변수에 접근은 안됨.
-본인의 힙변수에서 접근가능(this)
다른 힙변수에 접근하고 싶다면 인수로 전달

profile
백엔드 교육과정 기록 velog입니다.

0개의 댓글