CodeGym /Java Blog /๋ฌด์ž‘์œ„์˜ /์ž๋ฐ”์˜ ๋ฉ”์†Œ๋“œ
John Squirrels
๋ ˆ๋ฒจ 41
San Francisco

์ž๋ฐ”์˜ ๋ฉ”์†Œ๋“œ

๋ฌด์ž‘์œ„์˜ ๊ทธ๋ฃน์— ๊ฒŒ์‹œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค
์•ˆ๋…•ํ•˜์„ธ์š”! ์ง€๋‚œ ์ˆ˜์—…์—์„œ ์šฐ๋ฆฌ๋Š” ํด๋ž˜์Šค์™€ ์ƒ์„ฑ์ž์— ๋Œ€ํ•ด ์•Œ๊ฒŒ ๋˜์—ˆ๊ณ  ์šฐ๋ฆฌ ์ž์‹ ์„ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•์„ ๋ฐฐ์› ์Šต๋‹ˆ๋‹ค. ์˜ค๋Š˜ ์šฐ๋ฆฌ๋Š” ์ˆ˜์—…์˜ ํ•„์ˆ˜์ ์ธ ๋ถ€๋ถ„์ธ Java ๋ฉ”์†Œ๋“œ์— ๋Œ€ํ•ด ๋” ์ž˜ ์•Œ๊ฒŒ ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค. Java์˜ ๋ฉ”์„œ๋“œ๋Š” ํ”„๋กœ๊ทธ๋žจ์—์„œ ํŠน์ • ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ๋ช…๋ น ์ง‘ํ•ฉ์ž…๋‹ˆ๋‹ค. ์ฆ‰, ๋ฉ”์„œ๋“œ๋Š” ํ•จ์ˆ˜์ž…๋‹ˆ๋‹ค. ํด๋ž˜์Šค๊ฐ€ ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ. ๋‹ค๋ฅธ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์—์„œ๋Š” ๋ฉ”์†Œ๋“œ๋ฅผ ์ข…์ข… "ํ•จ์ˆ˜"๋ผ๊ณ  ๋ถ€๋ฅด์ง€๋งŒ Java์—์„œ๋Š” "๋ฉ”์†Œ๋“œ"๋ผ๋Š” ๋‹จ์–ด๊ฐ€ ๋” ์ผ๋ฐ˜์ ์ž…๋‹ˆ๋‹ค. :) ๊ธฐ์–ตํ•˜์‹œ๊ฒ ์ง€๋งŒ, ์ง€๋‚œ ์ˆ˜์—…์—์„œ Cat ํด๋ž˜์Šค ์— ๋Œ€ํ•œ ๊ฐ„๋‹จํ•œ ๋ฉ”์„œ๋“œ๋ฅผ ๋งŒ๋“ค์–ด์„œ ๊ณ ์–‘์ด๊ฐ€ ์•ผ์˜นํ•˜๊ณ  ์ ํ”„ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ–ˆ์Šต๋‹ˆ๋‹ค.
public class Cat {

    String name;
    int age;

    public void sayMeow() {
        System.out.println("Meow!");
    }

    public void jump() {
        System.out.println("Pounce!");
    }

    public static void main(String[] args) {
        Cat smudge = new Cat();
        smudge.age = 3;
        smudge.name = "Smudge";

        smudge.sayMeow();
        smudge.jump();
    }
}
sayMeow() ๋ฐ jump()๋Š” ์šฐ๋ฆฌ ํด๋ž˜์Šค์˜ ๋ฉ”์„œ๋“œ์ž…๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋ฉ”์„œ๋“œ๋ฅผ ์‹คํ–‰ํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ฝ˜์†” ์ถœ๋ ฅ์ด ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค.
Meow!
Pounce!
์šฐ๋ฆฌ์˜ ๋ฐฉ๋ฒ•์€ ๋งค์šฐ ๊ฐ„๋‹จํ•ฉ๋‹ˆ๋‹ค. ๋‹จ์ˆœํžˆ ์ฝ˜์†”์— ํ…์ŠคํŠธ๋ฅผ ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ Java์—์„œ ๋ฉ”์„œ๋“œ๋Š” ์ค‘์š”ํ•œ ์ž‘์—…์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ์ฒด์˜ ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค. ๊ฐœ์ฒด์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณ€๊ฒฝํ•˜๊ณ  ๋ณ€ํ™˜ํ•˜๊ณ  ํ‘œ์‹œํ•˜๊ณ  ๋‹ค๋ฅธ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ์˜ ํ˜„์žฌ ๋ฉ”์„œ๋“œ๋Š” Cat ๊ฐœ์ฒด์˜ ๋ฐ์ดํ„ฐ ๋กœ ์•„๋ฌด ์ž‘์—…๋„ ์ˆ˜ํ–‰ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค . ์ข€ ๋” ์˜ˆ์‹œ์ ์ธ ์˜ˆ๋ฅผ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.
public class Truck {

    int length;
    int width;
    int height;
    int weight;

    public int getVolume() {
        int volume = length * width * height;
        return volume;
    }
}
์˜ˆ๋ฅผ ๋“ค์–ด ์—ฌ๊ธฐ์— Truck ์„ ๋‚˜ํƒ€๋‚ด๋Š” ํด๋ž˜์Šค๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค . ์„ธ๋ฏธ ํŠธ๋Ÿญ์—๋Š” ๊ธธ์ด, ๋„ˆ๋น„, ๋†’์ด ๋ฐ ๋ฌด๊ฒŒ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค(๋‚˜์ค‘์— ํ•„์š”ํ•จ). getVolume() ๋ฉ”์„œ๋“œ ์—์„œ ๊ฐ์ฒด์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋ถ€ํ”ผ๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ์ˆซ์ž(๊ธธ์ด, ๋„ˆ๋น„ ๋ฐ ๋†’์ด๋ฅผ ๊ณฑํ•จ)๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ ๊ณ„์‚ฐ์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค. ์ด ์ˆซ์ž๋Š” ๋ฉ”์„œ๋“œ์˜ ๊ฒฐ๊ณผ์ž…๋‹ˆ๋‹ค. ๋ฉ”์„œ๋“œ์˜ ์„ ์–ธ์€ public int getVolume ์œผ๋กœ ์ž‘์„ฑ๋ฉ๋‹ˆ๋‹ค . ์ฆ‰, ์ด ๋ฉ”์„œ๋“œ๋Š” int ๋ฅผ ๋ฐ˜ํ™˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค . ๋ฉ”์„œ๋“œ์˜ ๋ฐ˜ํ™˜ ๊ฐ’์„ ๊ณ„์‚ฐํ–ˆ์œผ๋ฉฐ ์ด์ œ ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•œ ํ”„๋กœ๊ทธ๋žจ์— ๋ฐ˜ํ™˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. Java์—์„œ ๋ฉ”์„œ๋“œ์˜ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋ ค๋ฉด return ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๋ฐ˜ํ™˜ ๋ณผ๋ฅจ;

์ž๋ฐ” ๋ฉ”์†Œ๋“œ ๋งค๊ฐœ๋ณ€์ˆ˜

๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•  ๋•Œ "์ธ์ˆ˜"๋ผ๋Š” ๊ฐ’์„ ๋ฉ”์„œ๋“œ์— ์ „๋‹ฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฉ”์†Œ๋“œ์˜ ์„ ์–ธ์—๋Š” ๋ฉ”์†Œ๋“œ๊ฐ€ ํ—ˆ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋ณ€์ˆ˜์˜ ์œ ํ˜•๊ณผ ์ˆœ์„œ๋ฅผ ์•Œ๋ ค์ฃผ๋Š” ๋ณ€์ˆ˜ ๋ชฉ๋ก์ด ํฌํ•จ๋ฉ๋‹ˆ๋‹ค. ์ด ๋ชฉ๋ก์„ "๋ฉ”์†Œ๋“œ ๋งค๊ฐœ๋ณ€์ˆ˜"๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค. Truck ํด๋ž˜์Šค ์˜ getVolume() ๋ฉ”์„œ๋“œ๋Š” ํ˜„์žฌ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์ •์˜ํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ ํŠธ๋Ÿญ ์˜ˆ์ œ๋ฅผ ํ™•์žฅํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. BridgeOfficer ๋ผ๋Š” ์ƒˆ ํด๋ž˜์Šค๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค . ์ด๊ฒƒ์€ ๊ต๋Ÿ‰์—์„œ ๊ทผ๋ฌดํ•˜๋Š” ๊ฒฝ์ฐฐ๊ด€์œผ๋กœ, ํ†ต๊ณผํ•˜๋Š” ๋ชจ๋“  ํŠธ๋Ÿญ์ด ํ—ˆ์šฉ ์ค‘๋Ÿ‰์„ ์ดˆ๊ณผํ•˜๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
public class BridgeOfficer {

    int maxWeight;

    public BridgeOfficer(int normalWeight) {
        this.maxWeight = normalWeight;
    }

    public boolean checkTruck(Truck truck) {
        if (truck.weight > maxWeight) {
            return false;
        } else {
            return true;
        }
    }
}
checkTruck ๋ฉ”์„œ๋“œ๋Š” Truck ๊ฐœ์ฒด ๋ผ๋Š” ํ•˜๋‚˜์˜ ์ธ์ˆ˜๋ฅผ ๋ฐ›์•„๋“ค์ด๊ณ  ๊ฒฝ์ฐฐ๊ด€ ์ด ํŠธ๋Ÿญ์ด ๋‹ค๋ฆฌ์— ์ง„์ž…ํ•˜๋„๋ก ํ—ˆ์šฉํ• ์ง€ ์—ฌ๋ถ€๋ฅผ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค. ๋ฉ”์„œ๋“œ ๋‚ด๋ถ€์˜ ๋…ผ๋ฆฌ๋Š” ๊ฐ„๋‹จํ•ฉ๋‹ˆ๋‹ค. ํŠธ๋Ÿญ์˜ ๋ฌด๊ฒŒ๊ฐ€ ํ—ˆ์šฉ๋œ ์ตœ๋Œ€๊ฐ’์„ ์ดˆ๊ณผํ•˜๋ฉด ๋ฉ”์„œ๋“œ๋Š” false ๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค . ๋‹ค๋ฅธ ๊ธธ์„ ์ฐพ์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค :( ๊ฐ€์ค‘์น˜๊ฐ€ ์ตœ๋Œ€๊ฐ’ ์ดํ•˜์ด๋ฉด ํ†ต๊ณผํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ๋ฉ”์„œ๋“œ๋Š” true๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.. "return" ๋˜๋Š” "the method returns a value"๋ผ๋Š” ๋ฌธ๊ตฌ๋ฅผ ์•„์ง ์™„์ „ํžˆ ์ดํ•ดํ•˜์ง€ ๋ชปํ–ˆ๋‹ค๋ฉด ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ์ž ์‹œ ์ค‘๋‹จํ•˜๊ณ  ์‹ค์ƒํ™œ์˜ ๊ฐ„๋‹จํ•œ ์˜ˆ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ณ ๋ คํ•˜์‹ญ์‹œ์˜ค. :) ๋‹น์‹ ์ด ์•„ํ”„๊ณ  ๋ฉฐ์น  ๋™์•ˆ ์ผ์„ ํ•˜์ง€ ์•Š๊ณ  ์ง‘์— ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด ๋ด…์‹œ๋‹ค. ๋ณ‘๊ฐ€๋Š” ์ง€๋ถˆํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์˜์‚ฌ์˜ ์ง„๋‹จ์„œ๋ฅผ ๊ฐ€์ง€๊ณ  ํšŒ๊ณ„ ๋ถ€์„œ์— ๊ฐ‘๋‹ˆ๋‹ค. ์ด ์ƒํ™ฉ์„ ๋ฐฉ๋ฒ•๊ณผ ๋น„๊ตํ•˜๋ฉด ํšŒ๊ณ„์‚ฌ๋Š” paySickLeave ()๋ฐฉ๋ฒ•. ์ด ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ์ธ์ˆ˜๋กœ ์˜์‚ฌ์˜ ์ง„๋‹จ์„œ๋ฅผ ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค(์ด ๋ฐฉ๋ฒ•์ด ์—†์œผ๋ฉด ๋ฐฉ๋ฒ•์ด ์ž‘๋™ํ•˜์ง€ ์•Š์œผ๋ฉฐ ๊ธ‰์—ฌ๋ฅผ ๋ฐ›์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค!). ๊ทธ๋Ÿฐ ๋‹ค์Œ ๊ท€ํ•˜์˜ ๋ฉ”๋ชจ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐฉ๋ฒ• ๋‚ด์—์„œ ํ•„์š”ํ•œ ๊ณ„์‚ฐ์ด ์ด๋ฃจ์–ด์ง€๊ณ (ํšŒ๊ณ„์‚ฌ๋Š” ์ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํšŒ์‚ฌ๊ฐ€ ๊ท€ํ•˜์—๊ฒŒ ์ง€๋ถˆํ•ด์•ผ ํ•˜๋Š” ๊ธˆ์•ก์„ ๊ณ„์‚ฐํ•ฉ๋‹ˆ๋‹ค) ๊ท€ํ•˜์˜ ์ž‘์—… ๊ฒฐ๊ณผ(๊ธˆ์•ก)๊ฐ€ ๊ท€ํ•˜์—๊ฒŒ ๋ฐ˜ํ™˜๋ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ ํ”„๋กœ๊ทธ๋žจ์€ ๋น„์Šทํ•œ ๋ฐฉ์‹์œผ๋กœ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜๊ณ  ๋ฐ์ดํ„ฐ๋ฅผ ์ „๋‹ฌํ•˜๊ณ  ๊ถ๊ทน์ ์œผ๋กœ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ›์Šต๋‹ˆ๋‹ค. BridgeOfficer ํ”„๋กœ๊ทธ๋žจ์˜ main() ๋ฉ”์„œ๋“œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค .
public static void main(String[] args) {
    Truck first = new Truck();
    first.weight = 10000;
    Truck second = new Truck();
    second.weight = 20000;

    BridgeOfficer officer = new BridgeOfficer(15000);
    System.out.println("Truck 1! Can I go, officer?");
    boolean canFirstTruckGo = officer.checkTruck(first);
    System.out.println(canFirstTruckGo);

    System.out.println();

    System.out.println("Truck 2! And can I?");
    boolean canSecondTruckGo = officer.checkTruck(second);
    System.out.println(canSecondTruckGo);
}
์šฐ๋ฆฌ๋Š” 10,000๊ณผ 20,000์˜ ์ ์žฌ๋Ÿ‰์„ ๊ฐ€์ง„ ๋‘ ๋Œ€์˜ ํŠธ๋Ÿญ์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์žฅ๊ต๊ฐ€ ์ผํ•˜๋Š” ๋‹ค๋ฆฌ์˜ ์ตœ๋Œ€ ๋ฌด๊ฒŒ๋Š” 15,000์ž…๋‹ˆ๋‹ค. ํ”„๋กœ๊ทธ๋žจ์€ officer.checkTruck(first) ๋ฉ”์†Œ๋“œ๋ฅผ ํ˜ธ์ถœํ•ฉ๋‹ˆ๋‹ค. ๋ฉ”์„œ๋“œ๋Š” ๋ชจ๋“  ๊ฒƒ์„ ๊ณ„์‚ฐํ•œ ๋‹ค์Œ true ๋ฅผ ๋ฐ˜ํ™˜ํ•˜๊ณ  ํ”„๋กœ๊ทธ๋žจ์€ ์ด๋ฅผ ๋ถ€์šธ ๋ณ€์ˆ˜ canFirstTruckGo ์— ์ €์žฅํ•ฉ๋‹ˆ๋‹ค . ์ด์ œ ํšŒ๊ณ„์‚ฌ๊ฐ€ ์ค€ ๋ˆ์œผ๋กœ ์›ํ•˜๋Š” ๋Œ€๋กœ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜๋ฃจ๊ฐ€ ๋๋‚˜๋ฉด ์ฝ”๋“œ
boolean canFirstTruckGo = officer.checkTruck(first);
๋กœ ์ข…๊ธฐ
boolean canFirstTruckGo =  true;
์—ฌ๊ธฐ์— ๋งค์šฐ ์ค‘์š”ํ•œ ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค. return ๋ฌธ์€ ๋ฉ”์„œ๋“œ์˜ ๋ฐ˜ํ™˜ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•  ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๋ฉ”์„œ๋“œ ์‹คํ–‰์„ ์ค‘์ง€ํ•ฉ๋‹ˆ๋‹ค! return ๋ฌธ ๋’ค์— ์˜ค๋Š” ์ฝ”๋“œ๋Š” ์‹คํ–‰๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค!
public boolean checkTruck(Truck truck) {

    if (truck.weight > maxWeight) {
        return false;
        System.out.println("Turn around, you're overweight!");
    } else {
        return true;
        System.out.println("Everything looks good, go ahead!");
    }
}
๋ฉ”์„œ๋“œ๊ฐ€ ์ด๋ฏธ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ˜ํ™˜ํ•˜๊ณ  ์ข…๋ฃŒ๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ๋‹ด๋‹น์ž์˜ ์„ค๋ช…์€ ํ‘œ์‹œ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค! ํ”„๋กœ๊ทธ๋žจ์€ ๋ฉ”์„œ๋“œ๊ฐ€ ํ˜ธ์ถœ๋œ ์œ„์น˜๋กœ ๋Œ์•„๊ฐ‘๋‹ˆ๋‹ค. ์ด๊ฒƒ์„ ์ฃผ์‹œํ•  ํ•„์š”๋Š” ์—†์Šต๋‹ˆ๋‹ค. Java ์ปดํŒŒ์ผ๋Ÿฌ๋Š” return ๋ฌธ ๋‹ค์Œ์— ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋ ค๊ณ  ํ•  ๋•Œ ์˜ค๋ฅ˜๋ฅผ ์ƒ์„ฑํ•  ๋งŒํผ ๋˜‘๋˜‘ํ•ฉ๋‹ˆ๋‹ค.

์–ด๋ฒค์ ธ์Šค: ํŒŒ๋ผ๋ฏธํ„ฐ ์›Œ

์—ฌ๋Ÿฌ ๋ฐฉ๋ฒ•์œผ๋กœ ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•ด์•ผ ํ•˜๋Š” ์ƒํ™ฉ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ ์ž์‹ ์˜ ์ธ๊ณต ์ง€๋Šฅ์„ ๋งŒ๋“ค์–ด ๋ณด์ง€ ์•Š๊ฒ ์Šต๋‹ˆ๊นŒ? Amazon์—๋Š” Alexa๊ฐ€ ์žˆ๊ณ  Apple์—๋Š” Siri๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด ์šฐ๋ฆฌ๋Š” ์™œ ๊ทธ๊ฒƒ์„ ๊ฐ€์ง€๋ฉด ์•ˆ ๋ฉ๋‹ˆ๊นŒ? :) ์˜ํ™” ์•„์ด์–ธ๋งจ์—์„œ ํ† ๋‹ˆ ์Šคํƒ€ํฌ๋Š” ์ž์‹ ๋งŒ์˜ ๋†€๋ผ์šด ์ธ๊ณต ์ง€๋Šฅ์ธ ์ž๋น„์Šค๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค. ๊ทธ ๋ฉ‹์ง„ ์บ๋ฆญํ„ฐ์—๊ฒŒ ๊ฒฝ์˜๋ฅผ ํ‘œํ•˜๊ณ  ๊ทธ์˜ ์ด๋ฆ„์„ ๊ธฐ๋ฆฌ๊ธฐ ์œ„ํ•ด ์šฐ๋ฆฌ AI์˜ ์ด๋ฆ„์„ ์ง€์ •ํ•ฉ์‹œ๋‹ค. :) ๊ฐ€์žฅ ๋จผ์ € ํ•ด์•ผ ํ•  ์ผ์€ Jarvis์—๊ฒŒ ๋ฐฉ์— ๋“ค์–ด์˜ค๋Š” ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ์ธ์‚ฌํ•˜๋Š” ๋ฒ•์„ ๊ฐ€๋ฅด์น˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
public class Jarvis {

    public void sayHi(String name) {
        System.out.println("Good evening, " + name + ". How are you?");
    }

    public static void main(String[] args) {
        Jarvis jarvis = new Jarvis();
        jarvis.sayHi("Tony Stark");
    }
}
์ฝ˜์†” ์ถœ๋ ฅ:
Good evening, Tony Stark. How are you?
๋งค์šฐ ์ข‹์€! ์ž๋น„์Šค๋Š” ์ด์ œ ์†๋‹˜์„ ๋งž์ดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฌผ๋ก , ๊ทธ์˜ ์ฃผ์ธ์ธ ํ† ๋‹ˆ ์Šคํƒ€ํฌ๊ฐ€ ๊ฐ€์žฅ ์ž์ฃผ ์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๊ทธ๊ฐ€ ํ˜ผ์ž ์˜ค์ง€ ์•Š๋Š”๋‹ค๋ฉด ์–ด๋–จ๊นŒ์š”! ์šฐ๋ฆฌ์˜ sayHi() ๋ฉ”์„œ๋“œ๋Š” ํ•˜๋‚˜์˜ ์ธ์ˆ˜๋งŒ ํ—ˆ์šฉํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋ฐฉ์— ๋“ค์–ด์˜ค๋Š” ํ•œ ์‚ฌ๋žŒ์—๊ฒŒ๋งŒ ์ธ์‚ฌํ•  ์ˆ˜ ์žˆ๊ณ  ๋‹ค๋ฅธ ์‚ฌ๋žŒ์€ ๋ฌด์‹œํ•ฉ๋‹ˆ๋‹ค. ๋งค์šฐ ์˜ˆ์˜ ๋ฐ”๋ฅด์ง€ ์•Š์Šต๋‹ˆ๊นŒ? ๋™์˜ํ•˜์ง€ ์•Š์Šต๋‹ˆ๊นŒ? :/

์ž๋ฐ” ๋ฉ”์†Œ๋“œ ์˜ค๋ฒ„๋กœ๋”ฉ

์ด ๊ฒฝ์šฐ ์ด๋ฆ„์€ ๊ฐ™์ง€๋งŒ ๋งค๊ฐœ ๋ณ€์ˆ˜๊ฐ€ ๋‹ค๋ฅธ ๋‘ ๊ฐ€์ง€ ๋ฉ”์„œ๋“œ๋ฅผ ์ž‘์„ฑํ•˜์—ฌ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
public class Jarvis {

    public void sayHi(String firstGuest) {
        System.out.println("Good evening, " + firstGuest + ". How are you?");
    }

    public void sayHi(String firstGuest, String secondGuest) {
        System.out.println("Good evening, " + firstGuest + " and " + secondGuest + ". How are you?");
    }
}
์ด๋ฅผ ๋ฉ”์„œ๋“œ ์˜ค๋ฒ„๋กœ๋”ฉ์ด๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ๋ฉ”์„œ๋“œ ์˜ค๋ฒ„๋กœ๋”ฉ์„ ํ†ตํ•ด ํ”„๋กœ๊ทธ๋žจ์ด ๋” ์œ ์—ฐํ•ด์ง€๊ณ  ๋‹ค์–‘ํ•œ ์ž‘์—… ๋ฐฉ์‹์„ ์ˆ˜์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ž‘๋™ ๋ฐฉ์‹์„ ๊ฒ€ํ† ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.
public class Jarvis {

    public void sayHi(String firstGuest) {
        System.out.println("Good evening, " + firstGuest + ". How are you?");
    }

    public void sayHi(String firstGuest, String secondGuest) {
        System.out.println("Good evening, " + firstGuest + " and " + secondGuest + ". How are you?");
    }

    public static void main(String[] args) {
        Jarvis jarvis = new Jarvis();
        jarvis.sayHi("Tony Stark");
        jarvis.sayHi("Tony Stark", "Captain America");
    }
}
์ฝ˜์†” ์ถœ๋ ฅ:
Good evening, Tony Stark. How are you?
Good evening, Tony Stark and Captain America. How are you?
ํ›Œ๋ฅญํ•ฉ๋‹ˆ๋‹ค. ๋‘ ๋ฒ„์ „ ๋ชจ๋‘ ์ž‘๋™ํ–ˆ์Šต๋‹ˆ๋‹ค. :) ๊ทธ๋Ÿฌ๋‚˜ ์šฐ๋ฆฌ๋Š” ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค! ์†๋‹˜์ด 3๋ช…์ด๋ผ๋ฉด? ๋ฌผ๋ก  ์„ธ ๊ฐœ์˜ ๊ฒŒ์ŠคํŠธ ์ด๋ฆ„์„ ํ—ˆ์šฉํ•˜๋„๋ก sayHi() ๋ฉ”์„œ๋“œ๋ฅผ ๋‹ค์‹œ ์˜ค๋ฒ„๋กœ๋“œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ 4๊ฐœ ๋˜๋Š” 5๊ฐœ๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฌดํ•œ๋Œ€๊นŒ์ง€. sayHi() ๋ฉ”์„œ๋“œ๋ฅผ ๋ฐฑ๋งŒ ๋ฒˆ ์˜ค๋ฒ„๋กœ๋“œํ•˜์ง€ ์•Š๊ณ  ์ž๋น„์Šค์—๊ฒŒ ์ด๋ฆ„์„ ์ฒ˜๋ฆฌํ•˜๋„๋ก ๊ฐ€๋ฅด์น˜๋Š” ๋” ์ข‹์€ ๋ฐฉ๋ฒ•์ด ์—†์„๊นŒ์š” ? :/ ๋ฌผ๋ก  ์žˆ์Šต๋‹ˆ๋‹ค! ๊ทธ๋ ‡์ง€ ์•Š๋‹ค๋ฉด Java๊ฐ€ ์„ธ๊ณ„์—์„œ ๊ฐ€์žฅ ์ธ๊ธฐ ์žˆ๋Š” ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๊ฐ€ ๋  ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜์‹ญ๋‹ˆ๊นŒ? ;)
public void sayHi(String...names) {

    for (String name: names) {
        System.out.println("Good evening, " + name + ". How are you?");
    }
}
( String... names )๊ฐ€ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์‚ฌ์šฉ๋˜๋ฉด ๋ฌธ์ž์—ด ๋ชจ์Œ์ด ๋ฉ”์„œ๋“œ์— ์ „๋‹ฌ๋จ์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. ์–ผ๋งˆ๋‚˜ ๋งŽ์€์ง€ ๋ฏธ๋ฆฌ ์ง€์ •ํ•  ํ•„์š”๊ฐ€ ์—†์œผ๋ฏ€๋กœ ์ด์ œ ๋ฐฉ๋ฒ•์ด ํ›จ์”ฌ ๋” ์œ ์—ฐํ•ด์กŒ์Šต๋‹ˆ๋‹ค.
public class Jarvis {

    public void sayHi(String...names) {
        for (String name: names) {
            System.out.println("Good evening, " + name + ". How are you?");
        }
    }

    public static void main(String[] args) {
        Jarvis jarvis = new Jarvis();
        jarvis.sayHi("Tony Stark", "Captain America", "Black Widow", "Hulk");
    }
}
์ฝ˜์†” ์ถœ๋ ฅ:
Good evening, Tony Stark. How are you?
Good evening, Captain America. How are you?
Good evening, Black Widow. How are you?
Good evening, Hulk. How are you?
์—ฌ๊ธฐ์— ์žˆ๋Š” ์ผ๋ถ€ ์ฝ”๋“œ๋Š” ์ต์ˆ™ํ•˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์ง€๋งŒ ๊ฑฑ์ •ํ•˜์ง€ ๋งˆ์‹ญ์‹œ์˜ค. ํ•ต์‹ฌ์€ ๊ฐ„๋‹จํ•ฉ๋‹ˆ๋‹ค. ๋ฐฉ๋ฒ•์€ ๊ฐ ์ด๋ฆ„์„ ์ฐจ๋ก€๋กœ ๊ฐ€์ ธ์™€ ๊ฐ ์†๋‹˜์„ ๋งž์ดํ•ฉ๋‹ˆ๋‹ค! ๋˜ํ•œ ์ „๋‹ฌ๋œ ๋ฌธ์ž์—ด ์ˆ˜์— ๊ด€๊ณ„์—†์ด ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค! 2๋ช…, 10๋ช…, ์‹ฌ์ง€์–ด 1000๋ช…๊นŒ์ง€ - ์ด ๋ฐฉ๋ฒ•์€ ์†๋‹˜์˜ ์ˆ˜์— ๊ด€๊ณ„์—†์ด ์ ์ ˆํ•˜๊ฒŒ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ๋ชจ๋“  ๊ฐ€๋Šฅ์„ฑ์— ๋Œ€ํ•ด ๋ฐฉ๋ฒ•์„ ์˜ค๋ฒ„๋กœ๋“œํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ํ›จ์”ฌ ํŽธ๋ฆฌํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•˜์ง€ ์•Š์Šต๋‹ˆ๊นŒ? :) ์—ฌ๊ธฐ์— ๋˜ ๋‹ค๋ฅธ ์ค‘์š”ํ•œ ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ธ์ˆ˜์˜ ์ˆœ์„œ๊ฐ€ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค! ๋ฉ”์„œ๋“œ๊ฐ€ ๋ฌธ์ž์—ด๊ณผ ์ˆซ์ž๋ฅผ ๋ฐ›๋Š”๋‹ค๊ณ  ๊ฐ€์ •ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.
public class Person {

    public static void sayYourAge(String greeting, int age) {
        System.out.println(greeting + " " + age);
    }

    public static void main(String[] args) {
        sayYourAge("My age is ", 33);
        sayYourAge(33, "My age is "); // Error!
    }
}
Person ํด๋ž˜์Šค์˜ sayYourAge ๋ฉ”์†Œ๋“œ๊ฐ€ ๋ฌธ์ž์—ด๊ณผ ์ˆซ์ž๋ฅผ ์ž…๋ ฅ์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ํ”„๋กœ๊ทธ๋žจ์€ ํŠน์ • ์ˆœ์„œ๋กœ ์ด๋“ค์„ ์ „๋‹ฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค! ๋‹ค๋ฅธ ์ˆœ์„œ๋กœ ์ „๋‹ฌํ•˜๋ฉด ์ปดํŒŒ์ผ๋Ÿฌ์—์„œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๊ณ  ์‚ฌ์šฉ์ž๋Š” ์ž์‹ ์˜ ๋‚˜์ด๋ฅผ ๋งํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฑด ๊ทธ๋ ‡๊ณ , ์ง€๋‚œ ์ˆ˜์—…์—์„œ ๋‹ค๋ฃฌ ์ƒ์„ฑ์ž๋„ ๋ฉ”์„œ๋“œ์ž…๋‹ˆ๋‹ค! ๋˜ํ•œ ๊ทธ๊ฒƒ๋“ค์„ ์˜ค๋ฒ„๋กœ๋“œํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ(์ฆ‰, ๋งค๊ฐœ ๋ณ€์ˆ˜ ์ง‘ํ•ฉ์ด ๋‹ค๋ฅธ ์—ฌ๋Ÿฌ ์ƒ์„ฑ์ž๋ฅผ ์ƒ์„ฑ) ์ „๋‹ฌ๋œ ์ธ์ˆ˜์˜ ์ˆœ์„œ๋„ ๊ทผ๋ณธ์ ์œผ๋กœ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋“ค์€ ์‹ค์ œ ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค! :)

๋งค๊ฐœ๋ณ€์ˆ˜์— ๋Œ€ํ•ด ๋‹ค์‹œ ํ•œ ๋ฒˆ

์˜ˆ, ์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค. ์•„์ง ์™„๋ฃŒํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. :) ์ง€๊ธˆ ๊ณต๋ถ€ํ•  ์ฃผ์ œ๋Š” ๋งค์šฐ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. ํ–ฅํ›„ ๋ชจ๋“  ์ธํ„ฐ๋ทฐ์—์„œ ์ด์— ๋Œ€ํ•ด ์งˆ๋ฌธ์„ ๋ฐ›์„ ํ™•๋ฅ ์ด 90%์ž…๋‹ˆ๋‹ค! ๋ฉ”์„œ๋“œ์— ์ธ์ˆ˜๋ฅผ ์ „๋‹ฌํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•ด ๋ด…์‹œ๋‹ค. ๊ฐ„๋‹จํ•œ ์˜ˆ๋ฅผ ๊ณ ๋ คํ•˜์‹ญ์‹œ์˜ค.
public class TimeMachine {

    public void goToFuture(int currentYear) {
        currentYear = currentYear+10;
    }

    public void goToPast(int currentYear) {
        currentYear = currentYear-10;
    }

    public static void main(String[] args) {
        TimeMachine timeMachine = new TimeMachine();
        int currentYear = 2018;

        System.out.println("What year is it?");
        System.out.println(currentYear);

        timeMachine.goToPast(currentYear);
        System.out.println("How about now?");
        System.out.println(currentYear);
    }
}
ํƒ€์ž„๋จธ์‹ ์—๋Š” ๋‘ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋‘˜ ๋‹ค ํ˜„์žฌ ์—ฐ๋„๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ์ˆซ์ž๋ฅผ ์ž…๋ ฅ์œผ๋กœ ์‚ฌ์šฉํ•˜๊ณ  ๊ทธ ๊ฐ’์„ ๋Š˜๋ฆฌ๊ฑฐ๋‚˜ ์ค„์ž…๋‹ˆ๋‹ค(๊ณผ๊ฑฐ ๋˜๋Š” ๋ฏธ๋ž˜๋กœ ๊ฐ€๊ณ  ์‹ถ์€์ง€ ์—ฌ๋ถ€์— ๋”ฐ๋ผ ๋‹ค๋ฆ„). ๊ทธ๋Ÿฌ๋‚˜ ์ฝ˜์†” ์ถœ๋ ฅ์—์„œ โ€‹โ€‹๋ณผ ์ˆ˜ ์žˆ๋“ฏ์ด ์ด ๋ฐฉ๋ฒ•์€ ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค! ์ฝ˜์†” ์ถœ๋ ฅ:
What year is it?
2018
How about now?
2018
์šฐ๋ฆฌ๋Š” currentYear ๋ณ€์ˆ˜๋ฅผ goToPast() ๋ฉ”์„œ๋“œ ์— ์ „๋‹ฌํ–ˆ์ง€๋งŒ ๊ทธ ๊ฐ’์€ ๋ณ€๊ฒฝ๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” 2018๋…„์— ์žˆ์—ˆ๊ณ  ์—ฌ๊ธฐ์— ๋จธ๋ฌผ๋ €์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์™œ? :/ Java์˜ ํ”„๋ฆฌ๋ฏธํ‹ฐ๋ธŒ๋Š” ๊ฐ’์œผ๋กœ ๋ฉ”์„œ๋“œ์— ์ „๋‹ฌ๋˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ๊ทธ๊ฒŒ ๋ฌด์Šจ ๋œป์ด์•ผ? goToPast() ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœ ํ•˜๊ณ  ์—ฌ๊ธฐ์— int ๋ณ€์ˆ˜ currentYear(=2018)๋ฅผ ์ „๋‹ฌํ•˜๋ฉด ์ด ๋ฉ”์„œ๋“œ๋Š” currentYear ๋ณ€์ˆ˜ ์ž์ฒด๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ๋ณต์‚ฌ๋ณธ์„ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค. ๋ฌผ๋ก  ์ด ๋ณต์‚ฌ๋ณธ์˜ ๊ฐ’๋„ 2018์ด์ง€๋งŒ ๋ณต์‚ฌ๋ณธ์— ๋Œ€ํ•œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์€ ์›๋ž˜ currentYear ๋ณ€์ˆ˜์— ์–ด๋–ค ์‹์œผ๋กœ๋“  ์˜ํ–ฅ์„ ๋ฏธ์น˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค! ์ฝ”๋“œ๋ฅผ ๋” ๋ช…ํ™•ํ•˜๊ฒŒ ๋งŒ๋“ค๊ณ  currentYear์—์„œ ์–ด๋–ค ์ผ์ด ๋ฐœ์ƒํ•˜๋Š”์ง€ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.
public class TimeMachine {

    public void goToFuture(int currentYear) {
        currentYear = currentYear+10;
    }

    public void goToPast(int currentYear) {
        System.out.println("The goToPast method has started running!");
        System.out.println("currentYear inside the goToPast method (at the beginning) = " + currentYear);
        currentYear = currentYear-10;
        System.out.println("currentYear inside the goToPast method (at the end) = " + currentYear);
    }

    public static void main(String[] args) {
        TimeMachine timeMachine = new TimeMachine();
        int currentYear = 2018;

        System.out.println("What was the year when the program started?");
        System.out.println(currentYear);

        timeMachine.goToPast(currentYear);
        System.out.println("And what year is it now?");
        System.out.println(currentYear);
    }
}
์ฝ˜์†” ์ถœ๋ ฅ:
What was the year when the program started?
2018
The goToPast method has started running!
currentYear inside the goToPast method (at the beginning) = 2018
currentYear inside the goToPast method (at the end) = 2008
And what year is it now?
2018
์ด๋Š” goToPast() ๋ฉ”์„œ๋“œ ์— ์ „๋‹ฌ๋œ ๋ณ€์ˆ˜๊ฐ€ currentYear ์˜ ๋ณต์‚ฌ๋ณธ์ผ ๋ฟ์ž„์„ ๋ช…ํ™•ํ•˜๊ฒŒ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค . ์‚ฌ๋ณธ์„ ๋ณ€๊ฒฝํ•ด๋„ "์›๋ณธ" ๊ฐ’์—๋Š” ์˜ํ–ฅ์„ ๋ฏธ์น˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. "์ฐธ์กฐ๋กœ ์ „๋‹ฌ"์€ ์ •๋ฐ˜๋Œ€๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ๊ณ ์–‘์ด์—๊ฒŒ ์—ฐ์Šตํ•˜์ž! ๊ณ ์–‘์ด ์˜ˆ์ œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ฐธ์กฐ๋กœ ์ „๋‹ฌํ•˜๋Š” ๊ฒƒ์ด ์–ด๋–ป๊ฒŒ ๋ณด์ด๋Š”์ง€ ๋ด…์‹œ๋‹ค. :)
public class Cat {

    int age;

    public Cat(int age) {
        this.age = age;
    }
}
์ด์ œ ํƒ€์ž„๋จธ์‹ ์˜ ๋„์›€์œผ๋กœ ์„ธ๊ณ„ ์ตœ์ดˆ์˜ ์‹œ๊ฐ„ ์—ฌํ–‰ ๊ณ ์–‘์ด์ธ Smudge๋ฅผ ๊ณผ๊ฑฐ์™€ ๋ฏธ๋ž˜๋กœ ๋ณด๋‚ด๋“œ๋ฆฝ๋‹ˆ๋‹ค ! Cat ๊ฐœ์ฒด ์™€ ํ•จ๊ป˜ ์ž‘๋™ํ•˜๋„๋ก TimeMachine ํด๋ž˜์Šค๋ฅผ ์ˆ˜์ •ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค .
public class TimeMachine {

    public void goToFuture(Cat cat) {
        cat.age += 10;
    }

    public void goToPast(Cat cat) {
        cat.age -= 10;
    }
}
์ด์ œ ๋ฉ”์„œ๋“œ๋Š” ์ „๋‹ฌ๋œ ์ˆซ์ž๋งŒ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์˜คํžˆ๋ ค ํŠน์ • Cat ์˜ ์—ฐ๋ น ํ•„๋“œ๋ฅผ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค. ์›๋ž˜ ์ˆซ์ž๊ฐ€ ๋ณ€๊ฒฝ๋˜์ง€ ์•Š์•˜๊ธฐ ๋•Œ๋ฌธ์— ํ”„๋ฆฌ๋ฏธํ‹ฐ๋ธŒ์—๋Š” ์ด๊ฒƒ์ด ์ž‘๋™ํ•˜์ง€ ์•Š์•˜๋‹ค๋Š” ๊ฒƒ์„ ๊ธฐ์–ตํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋ฌด์Šจ ์ผ์ด ์ผ์–ด๋‚ ์ง€ ๋ณด์ž!
public static void main(String[] args) {

    TimeMachine timeMachine = new TimeMachine();
    Cat smudge = new Cat(5);

    System.out.println("How old was Smudge when the program started?");
    System.out.println(smudge.age);

    timeMachine.goToFuture(smudge);
    System.out.println("How about now?");
    System.out.println(smudge.age);

    System.out.println("Holy smokes! Smudge has aged 10 years! Back up quickly!");
    timeMachine.goToPast(smudge);
    System.out.println("Did it work? Have we returned the cat to its original age?");
    System.out.println(smudge.age);
}
์ฝ˜์†” ์ถœ๋ ฅ:
How old was Smudge when the program started running?
5
How about now?
15
Holy smokes! Smudge has aged 10 years! Back up quickly!
Did it work? Have we returned the cat to its original age?
5
์šฐ์™€! ์ด์ œ ๊ทธ ๋ฐฉ๋ฒ•์€ ๋ญ”๊ฐ€ ๋‹ฌ๋ž์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ ๊ณ ์–‘์ด๋Š” ๊ธ‰๊ฒฉํžˆ ๋Š™์—ˆ์ง€๋งŒ ๋‹ค์‹œ ์ Š์–ด์กŒ์Šต๋‹ˆ๋‹ค! :) ๊ทธ ์ด์œ ๋ฅผ ์•Œ์•„๋ด…์‹œ๋‹ค. ํ”„๋ฆฌ๋ฏธํ‹ฐ๋ธŒ๊ฐ€ ์žˆ๋Š” ์˜ˆ์ œ์™€ ๋‹ฌ๋ฆฌ ๊ฐœ์ฒด๊ฐ€ ๋ฉ”์„œ๋“œ์— ์ „๋‹ฌ๋  ๋•Œ ์ฐธ์กฐ๋กœ ์ „๋‹ฌ๋ฉ๋‹ˆ๋‹ค. ์›๋ณธ ์Šค๋จธ์ง€ ๊ฐœ์ฒด์— ๋Œ€ํ•œ ์ฐธ์กฐ๊ฐ€ changeAge() ๋ฉ”์„œ๋“œ ์— ์ „๋‹ฌ๋˜์—ˆ์Šต๋‹ˆ๋‹ค . ๋”ฐ๋ผ์„œ ๋ฉ”์„œ๋“œ ๋‚ด์—์„œ smudge.age๋ฅผ ๋ณ€๊ฒฝํ•˜๋ฉด ๊ฐ์ฒด๊ฐ€ ์ €์žฅ๋œ ๋™์ผํ•œ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์„ ์ฐธ์กฐํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ์ฒ˜์Œ์— ๋งŒ๋“  ๊ฒƒ๊ณผ ๋™์ผํ•œ Smudge์— ๋Œ€ํ•œ ์ฐธ์กฐ์ž…๋‹ˆ๋‹ค. ์ด๊ฒƒ์„ "์ฐธ์กฐ์— ์˜ํ•œ ์ „๋‹ฌ"์ด๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค! ๊ทธ๋Ÿฌ๋‚˜ ์ฐธ์กฐ๊ฐ€ ์žˆ๋Š” ๋ชจ๋“  ๊ฒƒ์ด ๊ทธ๋ ‡๊ฒŒ ์‰ฌ์šด ๊ฒƒ์€ ์•„๋‹™๋‹ˆ๋‹ค. :) ์˜ˆ์ œ๋ฅผ ๋ณ€๊ฒฝํ•ด ๋ด…์‹œ๋‹ค.
public class TimeMachine {

    public void goToFuture(Cat cat) {
        cat = new Cat(cat.age);
        cat.age += 10;
    }

    public void goToPast(Cat cat) {
        cat = new Cat(cat.age);
        cat.age -= 10;
    }

    public static void main(String[] args) {
        TimeMachine timeMachine = new TimeMachine();
        Cat smudge = new Cat(5);

        System.out.println("How old was Smudge when the program started?");
        System.out.println(smudge.age);

        timeMachine.goToFuture(smudge);
        System.out.println ("Smudge went to the future! Has his age changed?");
        System.out.println(smudge.age);

        System.out.println ("And if you try going back?");
        timeMachine.goToPast(smudge);
        System.out.println(smudge.age);
    }
}
์ฝ˜์†” ์ถœ๋ ฅ:
How old was Smudge when the program started running?
5
Smudge went to the future! Has his age changed?
5
And if you try going back?
5
๋‹ค์‹œ ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค! ะž_ะž ๋ฌด์Šจ ์ผ์ด ์ผ์–ด๋‚ฌ๋Š”์ง€ ์•Œ์•„๋ด…์‹œ๋‹ค. :) goToPast / goToFuture ๋ฉ”์„œ๋“œ ๋ฐ ์ฐธ์กฐ๊ฐ€ ์ž‘๋™ํ•˜๋Š” ๋ฐฉ์‹๊ณผ ๊ด€๋ จ ์ด ์žˆ์Šต๋‹ˆ๋‹ค . ์ž, ์ฃผ๋ชฉํ•ด์ฃผ์„ธ์š”! ์ด๊ฒƒ์€ ์ฐธ์กฐ์™€ ๋ฉ”์„œ๋“œ๊ฐ€ ์ž‘๋™ํ•˜๋Š” ๋ฐฉ์‹์„ ์ดํ•ดํ•˜๋Š” ๋ฐ ๊ฐ€์žฅ ์ค‘์š”ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์‚ฌ์‹ค ์šฐ๋ฆฌ๊ฐ€ goToFuture (Cat cat) ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•  ๋•Œ ์ „๋‹ฌ๋˜๋Š” ๊ฒƒ์€ ์ฐธ์กฐ ์ž์ฒด๊ฐ€ ์•„๋‹ˆ๋ผ ๊ณ ์–‘์ด ๊ฐœ์ฒด์— ๋Œ€ํ•œ ์ฐธ์กฐ์˜ ๋ณต์‚ฌ๋ณธ์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋ฉ”์„œ๋“œ์— ๊ฐœ์ฒด๋ฅผ ์ „๋‹ฌํ•  ๋•Œ ๊ฐœ์ฒด์— ๋Œ€ํ•œ ๋‘ ๊ฐœ์˜ ์ฐธ์กฐ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ๋ฌด์Šจ ์ผ์ด ์ผ์–ด๋‚˜๊ณ  ์žˆ๋Š”์ง€ ์ดํ•ดํ•˜๋Š” ๋ฐ ๋งค์šฐ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ๋ฐ”๋กœ ๋งˆ์ง€๋ง‰ ์˜ˆ์—์„œ ๊ณ ์–‘์ด์˜ ๋‚˜์ด๊ฐ€ ๋ณ€๊ฒฝ๋˜์ง€ ์•Š์€ ์ด์œ ์ž…๋‹ˆ๋‹ค. ์•ž์˜ ์˜ˆ์—์„œ ๋‚˜์ด๋ฅผ ๋ณ€๊ฒฝํ•  ๋•Œ ์šฐ๋ฆฌ๋Š” ๋‹จ์ˆœํžˆ goToFuture() ์— ์ „๋‹ฌ๋œ ์ฐธ์กฐ๋ฅผ ์ทจํ–ˆ์Šต๋‹ˆ๋‹ค.๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฉ”๋ชจ๋ฆฌ์—์„œ ๊ฐœ์ฒด๋ฅผ ์ฐพ๊ณ  ๋‚˜์ด๋ฅผ ๋ณ€๊ฒฝํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค( cat.age += 10 ). ๊ทธ๋Ÿฌ๋‚˜ ์ด์ œ goToFuture() ๋ฉ”์„œ๋“œ ๋‚ด์—์„œ ์ƒˆ ๊ฐœ์ฒด( cat = new Cat(cat.age) ) ๋ฅผ ๋งŒ๋“ค๊ณ  ์ด ๊ฐœ์ฒด์—๋Š” ๋ฉ”์„œ๋“œ์— ์ „๋‹ฌ๋œ ๊ฒƒ๊ณผ ๋™์ผํ•œ ์ฐธ์กฐ ๋ณต์‚ฌ๋ณธ์ด ํ• ๋‹น๋ฉ๋‹ˆ๋‹ค. ๊ฒฐ๊ณผ์ ์œผ๋กœ:
  • ์ฒซ ๋ฒˆ์งธ ์ฐธ์กฐ( Cat smudge = new Cat (5) )๋Š” ์›๋ž˜ ๊ณ ์–‘์ด(5์„ธ)๋ฅผ ๊ฐ€๋ฆฌํ‚ต๋‹ˆ๋‹ค.
  • ๊ทธ๋Ÿฐ ๋‹ค์Œ cat ๋ณ€์ˆ˜์— goToPast() ๋ฉ”์„œ๋“œ๋ฅผ ์ „๋‹ฌ ํ•˜๊ณ  ์ƒˆ ๊ฐœ์ฒด๋ฅผ ํ• ๋‹นํ•˜๋ฉด ์ฐธ์กฐ๊ฐ€ ๋ณต์‚ฌ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
๊ทธ๋ฆฌ๊ณ  ์ด๊ฒƒ์€ ์šฐ๋ฆฌ์—๊ฒŒ ์ตœ์ข… ๊ฒฐ๊ณผ๋ฅผ ๊ฐ€์ ธ์™”์Šต๋‹ˆ๋‹ค: ๋‘ ๊ฐœ์˜ ์„œ๋กœ ๋‹ค๋ฅธ ๊ฐ์ฒด๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ๋‘ ๊ฐœ์˜ ์ฐธ์กฐ. ๊ทธ๋Ÿฌ๋‚˜ ์šฐ๋ฆฌ๋Š” ๊ทธ๋“ค ์ค‘ ํ•˜๋‚˜(๋ฉ”์†Œ๋“œ ๋‚ด๋ถ€์—์„œ ์ƒ์„ฑ๋œ ๊ฒƒ)์˜ ๋‚˜์ด๋งŒ ๋ณ€๊ฒฝํ–ˆ์Šต๋‹ˆ๋‹ค.
cat.age += 10;
๊ทธ๋ฆฌ๊ณ  ๋ฌผ๋ก  main() ๋ฉ”์„œ๋“œ์—์„œ ์šฐ๋ฆฌ๋Š” ๊ณ ์–‘์ด์˜ ๋‚˜์ด smudge.age ๊ฐ€ ๋ณ€๊ฒฝ๋˜์ง€ ์•Š์•˜์Œ์„ ์ฝ˜์†”์—์„œ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค . ๊ฒฐ๊ตญ, ์Šค๋จธ์ง€๋Š” ์—ฌ์ „ํžˆ 5๋…„ ๋œ ์ด์ „์˜ ์›๋ž˜ ๊ฐœ์ฒด๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ์ฐธ์กฐ ๋ณ€์ˆ˜์ด๋ฉฐ ํ•ด๋‹น ๊ฐœ์ฒด์— ๋Œ€ํ•ด ์•„๋ฌด ์ž‘์—…๋„ ์ˆ˜ํ–‰ํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ๋ชจ๋“  ์—ฐ๋ น ๋ณ€๊ฒฝ์€ ์ƒˆ ๊ฐœ์ฒด์—์„œ ์ˆ˜ํ–‰๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋ฉ”์†Œ๋“œ, ๋ฉ”์†Œ๋“œ ๋งค๊ฐœ๋ณ€์ˆ˜, ์ƒํ˜ธ์ž‘์šฉ ๋ฐ ์˜ค๋ฒ„๋กœ๋”ฉ - 2๋”ฐ๋ผ์„œ ๊ฐœ์ฒด๋Š” ์ฐธ์กฐ์— ์˜ํ•ด ๋ฉ”์„œ๋“œ์— ์ „๋‹ฌ๋˜๋Š” ๊ฒƒ์œผ๋กœ ๋‚˜ํƒ€๋‚ฌ์Šต๋‹ˆ๋‹ค. ๊ฐœ์ฒด์˜ ๋ณต์‚ฌ๋ณธ์€ ์ž๋™์œผ๋กœ ์ƒ์„ฑ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ณ ์–‘์ด ๊ฐœ์ฒด๋ฅผ ๋ฉ”์„œ๋“œ์— ์ „๋‹ฌํ•˜๊ณ  ์ˆ˜๋ช…์„ ๋ณ€๊ฒฝํ•˜๋ฉด ์ˆ˜๋ช…๋„ ๋ณ€๊ฒฝ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ฐธ์กฐ ๋ณ€์ˆ˜๋Š” ๊ฐ’์„ ํ• ๋‹นํ•˜๊ฑฐ๋‚˜ ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•  ๋•Œ ๋ณต์‚ฌ๋ฉ๋‹ˆ๋‹ค! ํ”„๋ฆฌ๋ฏธํ‹ฐ๋ธŒ ์ „๋‹ฌ์— ๋Œ€ํ•ด ๋งํ•œ ๋‚ด์šฉ์„ ์—ฌ๊ธฐ์—์„œ ๋ฐ˜๋ณตํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. " changeInt() ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜๊ณ  int๋ณ€์ˆ˜ x (=15) , ๋ฉ”์„œ๋“œ๋Š” x ๋ณ€์ˆ˜ ์ž์ฒด๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ๋ณต์‚ฌ๋ณธ์„ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์‚ฌ๋ณธ์— ๋Œ€ํ•œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์€ ์›๋ณธ x ์— ์˜ํ–ฅ์„ ๋ฏธ์น˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.Java์—์„œ ์ธ์ˆ˜๊ฐ€ ์ „๋‹ฌ๋˜๋Š” ๋ฐฉ์‹์— ๋Œ€ํ•ด ํ•œ ๋ฒˆ ์ด์ƒ ๋…ผ์Ÿํ•˜๊ฒŒ ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค(์ˆ™๋ จ๋œ ๊ฐœ๋ฐœ์ž ์‚ฌ์ด์—์„œ๋„). ๊ทธ๋Ÿฌ๋‚˜ ์ด์ œ ์–ด๋–ป๊ฒŒ ์ž‘๋™ํ•˜๋Š”์ง€ ์ •ํ™•ํžˆ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ณ„์† ํ•˜์„ธ์š”! :) ๋ฐฐ์šด ๋‚ด์šฉ์„ ๋ณด๊ฐ•ํ•˜๋ ค๋ฉด Java ๊ณผ์ •์—์„œ ๋น„๋””์˜ค ๊ฐ•์˜๋ฅผ ์‹œ์ฒญํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.
์ฝ”๋ฉ˜ํŠธ
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION