0419 ์ž๋ฐ” 9์ผ์ฐจ ๐Ÿ•

๋‹ค ์€ยท2024๋…„ 4์›” 19์ผ

JAVA

๋ชฉ๋ก ๋ณด๊ธฐ
11/14

๐Ÿ‘ฝ ์˜ฌ๋ฐ”๋ฅธ ๋ฆฌํ„ด ํƒ€์ž…์œผ๋กœ ๋ฉ”์„œ๋“œ๋ฅผ ๋งŒ๋“ค์–ด์ฃผ์„ธ์š”.

public class Main {
    public static void main(String[] args) {
        int i = ๋กœ๋ด‡.get์ •์ˆ˜();		// ๋กœ๋ด‡ ํด๋ž˜์Šค์˜ ๋ฉ”์†Œ๋“œ get์ •์ˆ˜๋ฅผ int i์— ์ €์žฅ
        boolean b = ๋กœ๋ด‡.get๋…ผ๋ฆฌ();	// ๋กœ๋ด‡ ํด๋ž˜์Šค์˜ ๋ฉ”์†Œ๋“œ get๋…ผ๋ฆฌ๋ฅผ boolean b์— ์ €์žฅ
        ์‚ฌ๋žŒ a์‚ฌ๋žŒ = ๋กœ๋ด‡.get์‚ฌ๋žŒ();	// ์‚ฌ๋žŒ ํด๋ž˜์Šค์˜ ๊ฐ์ฒด a์‚ฌ๋žŒ์„ 5๊ฐœ ๋งŒ๋“ค์–ด์„œ
        ์‚ฌ๋žŒ a์‚ฌ๋žŒ2 = ๋กœ๋ด‡.get์‚ฌ๋žŒ2();	// ๋กœ๋ด‡์˜ get์‚ฌ๋žŒ ๋ฉ”์†Œ๋“œ์— ๊ฐ๊ฐ ์—ฐ๊ฒฐ
        ์‚ฌ๋žŒ a์‚ฌ๋žŒ3 = ๋กœ๋ด‡.get์‚ฌ๋žŒ3();
        ์‚ฌ๋žŒ a์‚ฌ๋žŒ4 = ๋กœ๋ด‡.get์‚ฌ๋žŒ4();
        ์‚ฌ๋žŒ a์‚ฌ๋žŒ5 = ๋กœ๋ด‡.get์‚ฌ๋žŒ5(123, false);	//๋งˆ์ง€๋ง‰ ๋ฉ”์†Œ๋“œ๋งŒ int์™€ boolean ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์ฃผ์–ด ๊ฐ’ ํ˜ธ์ถœ
    }
}
class ๋กœ๋ด‡{
    static int get์ •์ˆ˜(){		// ๋ฐ˜ํ™˜ํ•˜๋Š”๊ฒŒ ์ •์ˆ˜ํ˜•์ด๋ฏ€๋กœ static int
        return 0;
    }
    static boolean get๋…ผ๋ฆฌ(){		// ๋ฐ˜ํ™˜ํ•˜๋Š”๊ฒŒ ๋…ผ๋ฆฌํ˜•์ด๋ฏ€๋กœ static boolean
        return true;
    }
    static ์‚ฌ๋žŒ get์‚ฌ๋žŒ() {
        ์‚ฌ๋žŒ a์‚ฌ๋žŒ = new ์‚ฌ๋žŒ();
        return a์‚ฌ๋žŒ;
    }
    static ์‚ฌ๋žŒ get์‚ฌ๋žŒ2() {
        ์‚ฌ๋žŒ a์‚ฌ๋žŒ2 = new ์‚ฌ๋žŒ();
        return a์‚ฌ๋žŒ2;
    }
    static ์‚ฌ๋žŒ  get์‚ฌ๋žŒ3() {
        ์‚ฌ๋žŒ a์‚ฌ๋žŒ3 = new ์‚ฌ๋žŒ();
        return a์‚ฌ๋žŒ3;
    }
    static ์‚ฌ๋žŒ  get์‚ฌ๋žŒ4() {
        ์‚ฌ๋žŒ a์‚ฌ๋žŒ4 = new ์‚ฌ๋žŒ();
        return a์‚ฌ๋žŒ4;
    }
    static ์‚ฌ๋žŒ  get์‚ฌ๋žŒ5(int a, boolean b) {
        ์‚ฌ๋žŒ a์‚ฌ๋žŒ5 = new ์‚ฌ๋žŒ();
        return a์‚ฌ๋žŒ5;
    }
}
class ์‚ฌ๋žŒ extends ๋กœ๋ด‡{

}

๐Ÿ‘ฝ ์ „์‚ฌ๋Š” ๋“ค๊ณ ์žˆ๋Š” ๋ฌด๊ธฐ์— ๋”ฐ๋ผ ๊ณต๊ฒฉ๋ฐฉ์‹์ด ๋ฐ”๋€๋‹ค,์ด๋ฆ„๊ณผ ๋‚˜์ด๋„ ์ถœ๋ ฅ

public class Main {
    public static void main(String[] args) {
        ์ „์‚ฌ a์ „์‚ฌ = new ์ „์‚ฌ();

        a์ „์‚ฌ.์ด๋ฆ„ = "์นด๋‹ˆ";
        a์ „์‚ฌ.๋‚˜์ด = 22;
        a์ „์‚ฌ.a๋ฌด๊ธฐ = new ์นผ();

        a์ „์‚ฌ.๊ณต๊ฒฉ();
        // ์ถœ๋ ฅ : 22์‚ด ์ „์‚ฌ ์นด๋‹ˆ(์ด)๊ฐ€ ์นผ(์œผ)๋กœ ๊ณต๊ฒฉํ•ฉ๋‹ˆ๋‹ค.

        a์ „์‚ฌ.์ด๋ฆ„ = "์ดˆ์ฝ”";
        a์ „์‚ฌ.a๋ฌด๊ธฐ = new ํ™œ();
        a์ „์‚ฌ.๊ณต๊ฒฉ();
        // ์ถœ๋ ฅ : 22์‚ด ์ „์‚ฌ ์ดˆ์ฝ”(์ด)๊ฐ€ ํ™œ(์œผ)๋กœ ๊ณต๊ฒฉํ•ฉ๋‹ˆ๋‹ค.
    }
}
class ์ „์‚ฌ{
    int ๋‚˜์ด;
    String ์ด๋ฆ„;
    ๋ฌด๊ธฐ a๋ฌด๊ธฐ;
    void ๊ณต๊ฒฉ(){
        a๋ฌด๊ธฐ.์ž‘๋™(์ด๋ฆ„, ๋‚˜์ด);
    }
}
abstract class ๋ฌด๊ธฐ extends ์ „์‚ฌ {
    void ์ž‘๋™(String ์‚ฌ์šฉ์ž_์ด๋ฆ„, int ์‚ฌ์šฉ์ž_๋‚˜์ด, ๋ฌด๊ธฐ){
    }
}
class ์นผ extends ๋ฌด๊ธฐ{
    void ์ž‘๋™(String ์‚ฌ์šฉ์ž_์ด๋ฆ„, int ์‚ฌ์šฉ์ž_๋‚˜์ด, ๋ฌด๊ธฐ){
        System.out.println(์‚ฌ์šฉ์ž_๋‚˜์ด +"์‚ด ์ „์‚ฌ " + ์‚ฌ์šฉ์ž_์ด๋ฆ„ +"(์ด)๊ฐ€ ์นผ(์œผ)๋กœ ๊ณต๊ฒฉํ•ฉ๋‹ˆ๋‹ค.");
    }
}
class ํ™œ extends ๋ฌด๊ธฐ{
    void ์ž‘๋™(String ์‚ฌ์šฉ์ž_์ด๋ฆ„, int ์‚ฌ์šฉ์ž_๋‚˜์ด, ๋ฌด๊ธฐ) {
        System.out.println(์‚ฌ์šฉ์ž_๋‚˜์ด +"์‚ด ์ „์‚ฌ " + ์‚ฌ์šฉ์ž_์ด๋ฆ„ +"(์ด)๊ฐ€ ํ™œ(์œผ)๋กœ ๊ณต๊ฒฉํ•ฉ๋‹ˆ๋‹ค.");
    }
}

SUPER ํ•จ์ˆ˜

super ํ•จ์ˆ˜๋Š” ๋ถ€๋ชจ ํด๋ž˜์Šค์˜ ์ƒ์„ฑ์ž๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ํ•จ์ˆ˜์ด๋‹ค. ๋งŒ์•ฝ ๋ถ€๋ชจ ํด๋ž˜์Šค์˜ ์ƒ์„ฑ์ž๊ฐ€ ์—†์œผ๋ฉด ์ž์‹ ํด๋ž˜์Šค์—์„œ๋Š” superํ•จ์ˆ˜๊ฐ€ ์ƒ๋žต ๊ฐ€๋Šฅํ•˜๋‹ค. ๋ถ€๋ชจ ํด๋ž˜์Šค ์•ˆ์—๋„ ์ƒ์„ฑ์ž๊ฐ€ ์žˆ๊ณ , ์ž์‹ ํด๋ž˜์Šค์—๋„ ์ƒ์„ฑ์ž๊ฐ€ ์žˆ๋‹ค๋ฉด ๋ถ€๋ชจ ํด๋ž˜์Šค์˜ ์ƒ์„ฑ์ž๊ฐ€ ๋จผ์ € ์‹คํ–‰๋˜๊ณ  ๋‚œ ํ›„์— ์ž์‹ ํด๋ž˜์Šค์˜ ์ƒ์„ฑ์ž๊ฐ€ ์‹คํ–‰๋œ๋‹ค. ๋งŒ์•ฝ ์ž์‹ ํด๋ž˜์Šค์—์„œ super ํ•จ์ˆ˜๋ฅผ ์ƒ๋žตํ•˜๋”๋ผ๋„ ์ž๋ฐ”์—์„œ๋Š” ์ž๋™์œผ๋กœ ๋ถ€๋ชจ ํด๋ž˜์Šค์˜ ์ƒ์„ฑ์ž๋ฅผ ํ˜ธ์ถœํ•œ๋‹ค.

๐Ÿ‘ฝ SUPER ํ•จ์ˆ˜, ์ƒ์„ฑ์ž ์—ฐ์‡„ ํ˜ธ์ถœ

public class Main {
    public static void main(String[] args) {
        ์‚ฌ๋žŒ a์‚ฌ๋žŒ1 = new ์‚ฌ๋žŒ();
        ์‚ฌ๋žŒ a์‚ฌ๋žŒ2 = new ์‚ฌ๋žŒ("๊ธธ์ˆœ", 24);

        new ๋…ธ๋ฃจ();
    }
}

class ์‚ฌ๋žŒ extends ๋™๋ฌผ {
    String ์ด๋ฆ„;
    int ๋‚˜์ด;

    ์‚ฌ๋žŒ() {
        super(); // ์ด ์ฝ”๋“œ๋Š” ์ƒ๋žตํ•ด๋„ ํ•จ์ˆ˜ ์ œ์ผ ์œ— ๋ถ€๋ถ„์—์„œ ์ž๋™์œผ๋กœ ํ˜ธ์ถœ๋œ๋‹ค.

        this.์ด๋ฆ„ = "ํ™๊ธธ๋™";
        this.๋‚˜์ด = 22;
    }

    ์‚ฌ๋žŒ(String ์ด๋ฆ„, int ๋‚˜์ด) {
        // super(); // ์ด ์ฝ”๋“œ๋Š” ์ƒ๋žตํ•ด๋„ ํ•จ์ˆ˜ ์ œ์ผ ์œ— ๋ถ€๋ถ„์—์„œ ์ž๋™์œผ๋กœ ํ˜ธ์ถœ๋œ๋‹ค.
        this.์ด๋ฆ„ = ์ด๋ฆ„;
        this.๋‚˜์ด = ๋‚˜์ด;
    }
}

class ๋™๋ฌผ {
    ๋™๋ฌผ() {
        System.out.println("๋™๋ฌผ ์ƒ์„ฑ์ž ํ˜ธ์ถœ");
    }
}

class ๋…ธ๋ฃจ extends ๋™๋ฌผ {
    String ์ด๋ฆ„;
    int ๋‚˜์ด;

    // ์ƒ์„ฑ์ž๋ฅผ ์ง์ ‘ ์ •์˜ํ•˜์ง€ ์•Š๋Š”๋‹ค๋ฉด ์•„๋ž˜์™€ ๊ฐ™์€ ์ƒ์„ฑ์ž๊ฐ€ ์ž๋™์œผ๋กœ ์ถ”๊ฐ€๋œ๋‹ค.
    /*
    ๋…ธ๋ฃจ() {
        super();
    }
    */
}

๐Ÿ‘ฝ ์ค‘๋ณต ์ œ๊ฑฐ

public class Main {
    public static void main(String[] args) {
        ์ „์‚ฌ a์ „์‚ฌ = new ์ „์‚ฌ();
        a์ „์‚ฌ.์ด๋ฆ„ = "์นด๋‹ˆ";
        a์ „์‚ฌ.๋‚˜์ด = 122;
        a์ „์‚ฌ.a๋ฌด๊ธฐ = new ์นผ();
        a์ „์‚ฌ.๊ณต๊ฒฉ();
        // ์ถœ๋ ฅ : 122์‚ด ์ „์‚ฌ ์นด๋‹ˆ(์ด)๊ฐ€ ์นผ(์œผ)๋กœ ๊ณต๊ฒฉํ•ฉ๋‹ˆ๋‹ค.

        a์ „์‚ฌ.์ด๋ฆ„ = "์ดˆ์ฝ”";
        a์ „์‚ฌ.๋‚˜์ด = 123;
        a์ „์‚ฌ.a๋ฌด๊ธฐ = new ํ™œ();
        a์ „์‚ฌ.๊ณต๊ฒฉ();
        // ์ถœ๋ ฅ : 123์‚ด ์ „์‚ฌ ์ดˆ์ฝ”(์ด)๊ฐ€ ํ™œ(์œผ)๋กœ ๊ณต๊ฒฉํ•ฉ๋‹ˆ๋‹ค.
    }
}

class ์ „์‚ฌ {
    String ์ด๋ฆ„;
    int ๋‚˜์ด;
    ๋ฌด๊ธฐ a๋ฌด๊ธฐ;

    void ๊ณต๊ฒฉ () {
        a๋ฌด๊ธฐ.์ž‘๋™(์ด๋ฆ„, ๋‚˜์ด);
    }
}

abstract class ๋ฌด๊ธฐ extends ์ „์‚ฌ {
    String ๋ฌด๊ธฐ์ด๋ฆ„;
    void ์ž‘๋™(String ์ด๋ฆ„, int ๋‚˜์ด) {
        System.out.println(๋‚˜์ด + "์‚ด ์ „์‚ฌ " + ์ด๋ฆ„ + "(์ด)๊ฐ€ " + ๋ฌด๊ธฐ์ด๋ฆ„ + "(์œผ)๋กœ ๊ณต๊ฒฉํ•ฉ๋‹ˆ๋‹ค.");
    }

}

class ์นผ extends ๋ฌด๊ธฐ {
    ์นผ() {
        ๋ฌด๊ธฐ์ด๋ฆ„ = "์นผ";
    }
}

class ํ™œ extends ๋ฌด๊ธฐ {
    ํ™œ() {
        ๋ฌด๊ธฐ์ด๋ฆ„ = "ํ™œ";
    }
}

0๊ฐœ์˜ ๋Œ“๊ธ€