๋‚˜๋งŒ์˜ ์˜ค๋ž˜๋‹ฌ๋ฆฌ๊ธฐ๋ฅผ ํ•˜๋Š” ์‚ฌ๋žŒ

Become a ghost

Programming - Language/JAVA

[250304] JAVA ๊ธฐ๋ณธ - ๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ(OOP): ์ƒ์†(Inheritance) ๊ฐœ๋… ์ดํ•ดํ•˜๊ธฐ (๋ถ€๋ชจ ํด๋ž˜์Šค, ์ž์‹ ํด๋ž˜์Šค, super ํ‚ค์›Œ๋“œ, ์˜ค๋ฒ„๋ผ์ด๋”ฉ), ๋‹ค์ค‘์ƒ์†

jennnnna 2025. 3. 5. 01:29

 

์ƒ์†(Inheritance)์ด๋ž€ ?

์ž๋ฐ”์—์„œ๋Š” ํ•˜๋‚˜์˜ ํด๋ž˜์Šค๊ฐ€ ๋‹ค๋ฅธ ํด๋ž˜์Šค์—์„œ ํ•„๋“œ(๋ณ€์ˆ˜)์™€ ๋ฉ”์„œ๋“œ(๊ธฐ๋Šฅ)์„ ์ƒ์†๋ฐ›์•„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๋ฉฐ ์ด๋ฅผ ์ƒ์†์ด๋ผ๊ณ  ํ•œ๋‹ค. 

 

๋ถ€๋ชจ ํด๋ž˜์Šค(base class, parent class)์™€ ์ž์‹ ํด๋ž˜์Šค(derived class, extended class, child class)๋กœ ๋‚˜๋ˆ ์ ธ ์žˆ๋‹ค. 

 

  • ๋ถ€๋ชจ ํด๋ž˜์Šค(์Šˆํผ ํด๋ž˜์Šค, Superclass) → ๊ธฐ์กด์˜ ํด๋ž˜์Šค๋กœ, ๊ณตํ†ต ๊ธฐ๋Šฅ์„ ์ •์˜ํ•จ.
  • ์ž์‹ ํด๋ž˜์Šค(์„œ๋ธŒ ํด๋ž˜์Šค, Subclass) → ๋ถ€๋ชจ ํด๋ž˜์Šค๋ฅผ ์ƒ์†๋ฐ›์•„ ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ์ˆ˜์ •ํ•จ.

 

์ด๋ฏธ ์กด์žฌํ•˜๋Š” ํด๋ž˜์Šค๋ฅผ ์žฌ์‚ฌ์šฉํ•ด์„œ ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋„๋ก ํ•ด์ฃผ๋Š” ๊ธฐ๋Šฅ์ด๋‹ค. 

๋˜ํ•œ ์ž๋ฐ”์—์„œ๋Š” ๋ชจ๋“  ํด๋ž˜์Šค๊ฐ€ Object ํด๋ž˜์Šค๋ฅผ ์ง์ ‘, ๋˜๋Š” ๊ฐ„์ ‘์ ์œผ๋กœ ์ƒ์† ๋ฐ›๋Š”๋‹ค. 

( ์ž๋ฐ”์—์„œ ๋งŒ๋“œ๋Š” ๋ชจ๋“  ํด๋ž˜์Šค์˜ ์Šˆํผ ํด๋ž˜์Šค๋Š” Object ํด๋ž˜์Šค ์ธ๊ฒƒ. )

 

์ž๋ฐ”์—์„œ ํด๋ž˜์Šค๋Š” ๋‹จ์ผ ์ƒ์†( Single Inheritance ) ๋งŒ ํ—ˆ์šฉํ•œ๋‹ค. (but ์ธํ„ฐํŽ˜์ด์Šค๋Š” ๊ฐ€๋Šฅํ•˜๋‹ค) 

์—ฌ๊ธฐ์„œ ํ—ท๊ฐˆ๋ฆฌ์ง€ ๋ง์•„์•ผ ํ•  ๊ฒƒ์€

ํ•˜๋‚˜์˜ ์ž์‹ ํด๋ž˜์Šค๊ฐ€ ๋‘ ๊ฐœ ์ด์ƒ์˜ ๋ถ€๋ชจ ํด๋ž˜์Šค๋ฅผ ๊ฐ–๋Š” ๊ฒƒ์€ ์•ˆ๋˜์ง€๋งŒ, ์ƒ์†์„ ๋ฐ›์€ ํด๋ž˜์Šค๊ฐ€ ๋ˆ„๊ตฐ๊ฐ€์˜ ๋ถ€๋ชจ๊ฐ€ ๋˜๋Š” ๊ฒƒ์€ ๊ฐ€๋Šฅํ•˜๋‹ค !! 

์ด๊ฑธ ๋ˆ„๊ตฐ๊ฐ€๋Š” ์ด์ค‘์ƒ์† ํ˜น์€ ๋‹ค์ค‘์ƒ์†์ด๋ผ๊ณ  ๋ถ€๋ฅด๊ธฐ๋„ ํ•˜๋Š” ๊ฒƒ ๊ฐ™์€๋ฐ ์ •ํ™•ํ•œ ๋ช…์นญ์€ '๋‹ค๋‹จ๊ณ„ ์ƒ์†' ์ด๋ผ๊ณ  ํ•œ๋‹ค.

(๊ทธ๋ ‡๋‹ค๊ณ  ๊ณต์‹์ ์ธ ๋ช…์นญ์€ ๋˜ ์•„๋‹˜. ๋ฌธ์„œ์— ๊ด€๋ จ ๋‚ด์šฉ์ด ์–ธ๊ธ‰๋˜์ง€๋งŒ ๋”ฐ๋กœ ๋‹ค๋ฃฐ ์ •๋„๋กœ ๋น„์ค‘ ์žˆ๋Š” ๋‚ด์šฉ์€ ์•„๋‹Œ ๊ฒƒ ๊ฐ™๋‹ค) 

 

 

์ƒ์†์„ ์‚ฌ์šฉํ•˜๋ฉด ์ข‹์€ ์  

1. ์ฝ”๋“œ ์žฌ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•˜๋‹ค -> ๊ธฐ์กด ํด๋ž˜์Šค์˜ ๊ธฐ๋Šฅ์„ ๊ทธ๋Œ€๋กœ ๊ฐ€์ ธ์™€์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ 

2. ์œ ์ง€ ๋ณด์ˆ˜ ํŽธ๋ฆฌํ•˜๋‹ค -> ๊ณตํ†ต๋œ ์ฝ”๋“œ๊ฐ€ ํ•œ ๊ณณ (๋ถ€๋ชจ ํด๋ž˜์Šค) ์— ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ˆ˜์ •ํ•˜๊ธฐ ํŽธํ•˜๋‹ค. 

3. ๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ (OOP) ์›์น™์„ ์ถฉ์กฑํ•œ๋‹ค. -> ์ƒ์†์„ ํ†ตํ•ด ์ฝ”๋“œ์˜ ํ™•์žฅ์„ฑ์„ ๋†’์ผ ์ˆ˜ ์žˆ๋‹ค. 

 

 

์ž๋ฐ” ํด๋ž˜์Šค ๊ณ„์ธต ๊ตฌ์กฐ 

์ž๋ฐ”์—์„œ๋Š” ๋ชจ~๋“  ํด๋ž˜์Šค๊ฐ€ Object ๋ฅผ ์ƒ์† ๋ฐ›๋Š”๋‹ค. 

๊ฐœ๋ฐœํ•˜๋ฉด์„œ ์ง์ ‘ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๊ธฐ ๋•Œ๋ฌธ์— ๋ณด์ด์ง€ ์•Š์ง€๋งŒ ๋‚ด๋ถ€์ ์œผ๋กœ ํฌํ•จ๋˜์–ด ์žˆ์Œ!! 

 

 

์ƒ์† ์˜ˆ์ œ 

๋ถ€๋ชจ ํด๋ž˜์Šค์ธ '์ž์ „๊ฑฐ ํด๋ž˜์Šค' ๋Š” ์ž์ „๊ฑฐ์˜ ๊ธฐ๋ณธ์ ์ธ ์†์„ฑ์„ ๊ฐ€์ง„๋‹ค. ๊ธฐ์–ด, ์†๋„ ๋“ฑ๋“ฑ 

๊ทธ๋ฆฌ๊ณ  ์ž์‹ ํด๋ž˜์Šค์ธ '๋งˆ์šดํ‹ด ๋ฐ”์ดํฌ'๋Š” ๋ถ€๋ชจ ์ž์ „๊ฑฐ ํด๋ž˜์Šค๋ฅผ ์ƒ์† ๋ฐ›์•„ ์ž์ „๊ฑฐ์˜ ์†์„ฑ์„ ๋ถ€์—ฌ๋ฐ›๊ณ  ๋งˆ์šดํ‹ด๋งŒ์˜ ์ƒˆ๋กœ์šด ๋ฉ”์„œ๋“œ(๊ธฐ๋Šฅ)์„ ์ถ”๊ฐ€ํ•œ๋‹ค !! 

// ๋ถ€๋ชจ ํด๋ž˜์Šค (Superclass)
public class Bicycle {
    public int cadence;
    public int gear;
    public int speed;

    // ์ƒ์„ฑ์ž
    public Bicycle(int startCadence, int startSpeed, int startGear) {
        cadence = startCadence;
        speed = startSpeed;
        gear = startGear;
    }

    // ๋ฉ”์„œ๋“œ
    public void setCadence(int newValue) { cadence = newValue; }
    public void setGear(int newValue) { gear = newValue; }
    public void applyBrake(int decrement) { speed -= decrement; }
    public void speedUp(int increment) { speed += increment; }
}

// ์ž์‹ ํด๋ž˜์Šค (Subclass)
public class MountainBike extends Bicycle {
    public int seatHeight;

    // MountainBike ํด๋ž˜์Šค์˜ ์ƒ์„ฑ์ž
    public MountainBike(int startHeight, int startCadence, int startSpeed, int startGear) {
        super(startCadence, startSpeed, startGear); // ๋ถ€๋ชจ ํด๋ž˜์Šค์˜ ์ƒ์„ฑ์ž ํ˜ธ์ถœ
        seatHeight = startHeight;
    }

    // ์ƒˆ๋กœ์šด ๋ฉ”์„œ๋“œ ์ถ”๊ฐ€
    public void setHeight(int newValue) { seatHeight = newValue; }
}

 

์˜ˆ์ œ๋ฅผ ํ†ตํ•ด ๋ณผ ์ˆ˜ ์žˆ๋“ฏ์ด ๋…ผ๋ฆฌ์ ์œผ๋กœ๋„ ๋ถ€๋ชจ-์ž์‹ ๊ด€๊ณ„๊ฐ€ ์„ฑ๋ฆฝํ•ด์•ผํ•œ๋‹ค. 

์ฆ‰, ๋ถ„๋ฅ˜๋ฅผ ์ž˜ํ•ด์•ผํ•จ... 

์ž๋ฐ”๋กœ ๊ฒŒ์ž„์„ ๋งŒ๋“ค ๋•Œ ํฌ๊ฒŒ ๋Š๊ผˆ๋Š”๋ฐ ์ƒ์† ๊ด€๊ณ„๊ฐ€ ๋…ผ๋ฆฌ์ ์œผ๋กœ ์„ฑ๋ฆฝ๋˜์ง€ ์•Š์œผ๋ฉด ๋‚˜์ค‘์— ์œ ์ง€๋ณด์ˆ˜ํ•  ๋•Œ

์—„์ฒญ ๊ณ ์ƒํ•˜๊ฒŒ ๋œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ๋ชฌ์Šคํ„ฐ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ํด๋ž˜์Šค๋ฅผ ์ธ๊ฐ„์ธ ์ผ๋ฐ˜ ์œ ์ €๊ฐ€ ์ƒ์† ๋ฐ›๊ฒŒ ํ•œ๋‹ค๋˜์ง€.. 

 

์•„์ง๋„ ์ƒ๊ฐ ๋‚˜๋Š” ํ”ผ๋“œ๋ฐฑ "๋ชฌ์Šคํ„ฐ๊ฐ€ ์ธ๊ฐ„์„ ๋‚ณ๋‹ˆ?" ใ…‹ใ…‹ใ…‹ใ…‹ใ…‹ ใ…‹ใ…‹ 

 

์–ด๋–ป๊ฒŒ ๊ทธ๋Ÿฐ๊ฑธ ํ—ท๊ฐˆ๋ฆด ์ˆ˜ ์žˆ์ง€ ? ์‹ถ์ง€๋งŒ ๋ง‰์ƒ ๊ธฐํšํ•˜๊ณ  ๋งŒ๋“ค๋‹ค๋ณด๋ฉด

๋‚ด ์ƒ๊ฐ์ด ๋‹ค ๋งž๋Š” ๊ฒƒ ๊ฐ™๊ณ  ๋…ผ๋ฆฌ์ ์ธ ์˜ค๋ฅ˜๋ฅผ ๋ฒ”ํ•˜๋Š” ๋‚˜ ์ž์‹  ๊ฐ๊ด€ํ™”๊ฐ€ ์ž˜ ์•ˆ๋จ ใ…‹ใ…‹ใ…‹

๋‚˜๋„ ๋‚ด๊ฐ€ ์ž˜๋ชปํ•˜๊ณ  ์žˆ๋Š” ๊ฒƒ์„ ๋ชจ๋ฅผ ๋•Œ๊ฐ€ ๋งŽ์€ ๊ฒƒ ๊ฐ™๋‹ค 

 

 

์˜ค๋ฒ„๋ผ์ด๋”ฉ ํ•˜๊ธฐ 

๋ถ€๋ชจ ํด๋ž˜์Šค์˜ ๋ฉ”์„œ๋“œ๋ฅผ ์ž์‹ ํด๋ž˜์Šค์—์„œ ์ƒˆ๋กญ๊ฒŒ ์ •์˜ํ•  ์ˆ˜๋„ ์žˆ๋‹ค !! 

// ๋ถ€๋ชจ ํด๋ž˜์Šค
public class Bicycle {
    public void printInfo() {
        System.out.println("์ด๊ฒƒ์€ ์ž์ „๊ฑฐ์ž…๋‹ˆ๋‹ค.");
    }
}

// ์ž์‹ ํด๋ž˜์Šค
public class MountainBike extends Bicycle {
    // ๋ถ€๋ชจ ํด๋ž˜์Šค์˜ ๋ฉ”์„œ๋“œ ์žฌ์ •์˜ (Overriding)
    @Override
    public void printInfo() {
        System.out.println("์ด๊ฒƒ์€ ์‚ฐ์•… ์ž์ „๊ฑฐ์ž…๋‹ˆ๋‹ค.");
    }
}

// ์‹คํ–‰ ์ฝ”๋“œ
MountainBike myBike = new MountainBike();
myBike.printInfo();  // ์ถœ๋ ฅ: "์ด๊ฒƒ์€ ์‚ฐ์•… ์ž์ „๊ฑฐ์ž…๋‹ˆ๋‹ค."

 

โœ” @Override๋ฅผ ๋ถ™์ด๋ฉด ๋ถ€๋ชจ ํด๋ž˜์Šค์˜ ๋ฉ”์„œ๋“œ๋ฅผ ๋ฎ์–ด์“ฐ๊ธฐ(์žฌ์ •์˜)ํ•  ์ˆ˜ ์žˆ์Œ.
โœ” super.printInfo(); ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ถ€๋ชจ ํด๋ž˜์Šค์˜ ์›๋ž˜ ๋ฉ”์„œ๋“œ๋„ ํ˜ธ์ถœ ๊ฐ€๋Šฅ. (ํ•œ ๋ฒˆ๋„ ์จ๋ณธ ์ ์ด ์—†๋‹ค) 

 

 

์ƒ์†๊ณผ ์ƒ์„ฑ์ž (feat. super ๋ž€? )

์ž์‹ ํด๋ž˜์Šค๋Š” ๋ถ€๋ชจ ํด๋ž˜์Šค์˜ ์ƒ์„ฑ์ž๋ฅผ ์ž๋™์œผ๋กœ ํ˜ธ์ถœํ•˜์ง€๋งŒ, ์ง์ ‘ ํ˜ธ์ถœํ•  ์ˆ˜๋„ ์žˆ๋‹ค. 

** ์ž๋™์œผ๋กœ ํ˜ธ์ถœํ•œ๋‹ค๋Š” ๊ฒƒ์€? extend ํ•˜๊ฒŒ ๋˜๋ฉด ๋ถ€๋ชจ ํด๋ž˜์Šค์˜ ์ƒ์„ฑ์ž๊ฐ€ ๋ฌด์กฐ๊ฑด ํ˜ธ์ถœ๋จ. 

** ์ž๋ฐ”์—์„œ ๋ชจ๋“  ๊ฐ์ฒด๋Š” ์ƒ์„ฑ๋  ๋•Œ ๋ถ€๋ชจ ํด๋ž˜์Šค์˜ ์ƒ์„ฑ์ž๋ถ€ํ„ฐ ์‹คํ–‰๋œ๋‹ค.

 

super() ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด, ๋ถ€๋ชจ ํด๋ž˜์Šค์˜ ํŠน์ • ์ƒ์„ฑ์ž๋ฅผ ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค. 

public class Parent {
    public Parent() {
        System.out.println("๋ถ€๋ชจ ์ƒ์„ฑ์ž ํ˜ธ์ถœ");
    }
}

public class Child extends Parent {
    public Child() {
        super();  // ๋ถ€๋ชจ ํด๋ž˜์Šค์˜ ์ƒ์„ฑ์ž ํ˜ธ์ถœ
        System.out.println("์ž์‹ ์ƒ์„ฑ์ž ํ˜ธ์ถœ");
    }
}

public class Main {
    public static void main(String[] args) {
        Child obj = new Child();
    }
}


// ์ถœ๋ ฅ 
๋ถ€๋ชจ ์ƒ์„ฑ์ž ํ˜ธ์ถœ
์ž์‹ ์ƒ์„ฑ์ž ํ˜ธ์ถœ

 

super () ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ ๊ฐ€ ๋ญ˜๊นŒ? 

 

๊ทธ ์ „์— ๋จผ์ € ๊ธฐ๋ณธ ์ƒ์„ฑ์ž  Default Constructor ๋ž€? 

๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ์—†๋Š” ์ƒ์„ฑ์ž๋ฅผ ์˜๋ฏธํ•œ๋‹ค.

 

ํŠน์ง•์œผ๋กœ๋Š”, ๊ฐœ๋ฐœ์ž๊ฐ€ ์ง์ ‘ ์ƒ์„ฑ์ž๋ฅผ ๋งŒ๋“ค๋ฉด, ๊ธฐ๋ณธ์ƒ์„ฑ์ž๋Š” ์ƒ๊ธฐ์ง€ ์•Š์ง€๋งŒ 

์ƒ์„ฑ์ž๋ฅผ ํ•˜๋‚˜๋„ ์ž‘์„ฑํ•˜์ง€ ์•Š์œผ๋ฉด ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ์ž๋™์œผ๋กœ ์ถ”๊ฐ€ํ•ด์คŒ !!!!! 

์ฆ‰, '์ƒ์„ฑ์ž'๊ฐ€ ๋ฌด์กฐ๊ฑด ์žˆ์–ด์•ผํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ๋งŒ์•ฝ์— ์—†์„ ๋•Œ ์ž๋™์œผ๋กœ ์ƒ๊ธฐ๋Š” ์ƒ์„ฑ์ž. 

๋ณดํ†ต ๋งค๊ฐœ๋ณ€์ˆ˜ ์—†์ด ์ƒ์„ฑํ•  ์ผ์ด ๋งŽ์„๋•Œ, ๊ธฐ๋ณธ๊ฐ’์ด ์ •ํ•ด์ ธ์žˆ์„๋•Œ? ๊ธฐ๋ณธ์ƒ์„ฑ์ž๋ฅผ ๋งŒ๋“ค์–ด๋†“์Œ. 

 

super(); ๋Š” ๋ถ€๋ชจ ํด๋ž˜์Šค์˜ ์ƒ์„ฑ์ž๋ฅผ ๋ช…์‹œ์ ์œผ๋กœ ํ˜ธ์ถœํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ํ‚ค์›Œ๋“œ

์•„๋ž˜๋Š” super() ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ƒํ™ฉ 3๊ฐ€์ง€์— ๋Œ€ํ•ด ์ •๋ฆฌํ•œ ๊ฒƒ !! 

 

1. ๋ถ€๋ชจ ํด๋ž˜์Šค์— ๊ธฐ๋ณธ์ƒ์„ฑ์ž๊ฐ€ ์—†์„ ๋•Œ์—๋Š” super() ๊ฐ€ ํ•„์ˆ˜์ด๋‹ค. 

์ž์‹ ํด๋ž˜์Šค์—์„œ ๋ถ€๋ชจ ํด๋ž˜์Šค์— ๋Œ€ํ•œ super() ์—†์ด ์ž์‹์˜ ์ƒ์„ฑ์ž๋ฅผ ํ˜ธ์ถœํ•˜๋ฉด ์˜ค๋ฅ˜ ์ƒ๊ธด๋‹ค. (๋งจ ์œ—์ค„์— ์จ์ค˜์•ผํ•จ) 

class Parent {
    public Parent(int x) { // ๊ธฐ๋ณธ ์ƒ์„ฑ์ž ์—†์Œ
        System.out.println("๋ถ€๋ชจ ํด๋ž˜์Šค ์ƒ์„ฑ์ž ํ˜ธ์ถœ! x = " + x);
    }
}

class Child extends Parent {
    public Child() {
        // super();  // โŒ ๊ธฐ๋ณธ ์ƒ์„ฑ์ž๊ฐ€ ์—†์œผ๋ฏ€๋กœ ์ž๋™ ํ˜ธ์ถœ ๋ถˆ๊ฐ€ → ์—๋Ÿฌ ๋ฐœ์ƒ!
        super(10);  // โœ… ๋ฐ˜๋“œ์‹œ ๋ถ€๋ชจ ์ƒ์„ฑ์ž ํ˜ธ์ถœํ•ด์•ผ ํ•จ
        System.out.println("์ž์‹ ํด๋ž˜์Šค ์ƒ์„ฑ์ž ํ˜ธ์ถœ!");
    }
}

public class Main {
    public static void main(String[] args) {
        Child obj = new Child();
    }
}


// ์ถœ๋ ฅ๊ฐ’
๋ถ€๋ชจ ํด๋ž˜์Šค ์ƒ์„ฑ์ž ํ˜ธ์ถœ! x = 10
์ž์‹ ํด๋ž˜์Šค ์ƒ์„ฑ์ž ํ˜ธ์ถœ!

 

 main ํด๋ž˜์Šค๋ฅผ ๋ณด๋ฉด, ์ž์‹ ํด๋ž˜์Šค์˜ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ–ˆ๋Š”๋ฐ ๋ถ€๋ชจ ์ƒ์„ฑ์ž๊ฐ€ ๋จผ์ € ํ˜ธ์ถœ๋ผ์„œ super(10) 

์ถœ๋ ฅ๊ฐ’์€ ๋ถ€๋ชจ ํด๋ž˜์Šค ๋‚ด์šฉ ๋จผ์ € ๋‚˜์˜ด. 

 

2. ๋ถ€๋ชจ ํด๋ž˜์Šค์˜ ์ƒ์„ฑ์ž์—์„œ ์ค‘์š”ํ•œ ์ดˆ๊ธฐํ™”๋ฅผ ์ˆ˜ํ–‰ํ• ๋•Œ 

์œ„ 10๊ฐ€ ๋จผ์ € ์ถœ๋ ฅ๋œ ๊ฒƒ ์ฒ˜๋Ÿผ, ๋ถ€๋ชจ ํด๋ž˜์Šค์—์„œ ์ค‘์š”ํ•œ ๋‚ด์šฉ์„ ๋จผ์ € ์ดˆ๊ธฐํ™”ํ•ด์•ผ ํ•  ๊ฒฝ์šฐ!!!super ๋ฅผ ๋จผ์ € ์‚ฌ์šฉํ•ด์ค€๋‹ค. 

 

3. ๋ถ€๋ชจ ํด๋ž˜์Šค์—์„œ ์ค‘์š”ํ•œ ๋กœ์ง์„ ์‹คํ–‰ํ•ด์•ผ ํ•  ๋•Œ 

์œ„ ๋‚ด์šฉ๊ณผ ๋น„์Šทํ•จ. 

 

์ฆ‰ !! super(); ๋Š” ๋ถ€๋ชจ ์ƒ์„ฑ์ž๊ฐ€ ์—†๊ฑฐ๋‚˜, ๋ถ€๋ชจ์˜ ํŠน์ • ์ดˆ๊ธฐํ™”๊ฐ€ ํ•„์š”ํ•  ๋•Œ ์‚ฌ์šฉ๋œ๋‹ค.

 

๊ฐ์ฒด ํ˜•๋ณ€ํ™˜ (์—…์บ์ŠคํŒ… & ๋‹ค์šด์บ์ŠคํŒ…) 

์ž๋ฐ”๋Š” ์ƒ์†๊ด€๊ณ„์—์„œ ํƒ€์ž… ๋ณ€ํ™˜(ํ˜•๋ณ€ํ™˜, Casting) ์ด ๊ฐ€๋Šฅํ•˜๋‹ค. 

 

1. ์—…์บ์ŠคํŒ… (Upcasting) - ์ž์‹ ํด๋ž˜์Šค ๊ฐ์ฒด๋ฅผ ๋ถ€๋ชจ ํƒ€์ž…์œผ๋กœ ๋ณ€ํ™˜ 

MountainBike myBike = new MountainBike(10, 1, 10, 3);
Bicycle bike = myBike;  // ์—…์บ์ŠคํŒ… (์ž๋™ ๋ณ€ํ™˜)

๋ถ€๋ชจ์ธ ์ž์ „๊ฑฐ ํด๋ž˜์Šค์˜ ๊ฐ์ฒด์— ์™ ๋“ค์–ด๊ฐ. 

๋‹ค๋ฅธ๊ฑฐ ๋ญ ์•ˆํ•ด์ค˜๋„ ์ž๋™์œผ๋กœ ๋ณ€ํ™˜๋œ๋‹ค. 

 

 

2. ๋‹ค์šด์บ์ŠคํŒ… (Downcasting) - ๋ถ€๋ชจ ํƒ€์ž…์„ ์ž์‹ ํƒ€์ž…์œผ๋กœ ๋ณ€ํ™˜  

Bicycle bike = new MountainBike(10, 1, 10, 3);
MountainBike myBike = (MountainBike) bike;  // ๋‹ค์šด์บ์ŠคํŒ… (๋ช…์‹œ์  ๋ณ€ํ™˜)

(๊ด„ํ˜ธ๋ฅผ ๋ช…์‹œ์ ์œผ๋กœ ์ ์–ด์ค˜์•ผ ํ•œ๋‹ค !! ) 

 

 

 

์œ„ ์ƒ์†(Inheritance) ๊ฐœ๋…์€ Java Tutorials ๋ฌธ์„œ ์ค‘ "Inheritance" ๊ด€๋ จ ํŽ˜์ด์ง€์ธ
๐Ÿ“Œ Lesson: Object-Oriented Programming Concepts → Subclasses ์—์„œ ๊ฐ€์ ธ์™”๋‹ค. (๊ฐ์ฒด์ง€ํ–ฅ๊ด€๋ จ) 

์ž๋ฐ” ๊ณต์‹ ๋ฌธ์„œ๋Š” ํ•œ ๊ณณ์— ์ •๋ฆฌ๋œ ๊ฒŒ ์•„๋‹ˆ๋ผ ์—ฌ๋Ÿฌ ์นดํ…Œ๊ณ ๋ฆฌ๋กœ ๋‚˜๋‰˜์–ด ์žˆ์–ด์„œ ์ฐพ๊ธฐ ์–ด๋ ต๋‹ค.

  • Java SE Specification → ์ž๋ฐ” ๋ฌธ๋ฒ•์„ ์ •์˜ํ•˜๋Š” ์ŠคํŽ™ ๋ฌธ์„œ
  • Java Tutorials → ๊ฐœ๋… ์„ค๋ช… & ์˜ˆ์ œ ์ œ๊ณต (๋‚ด๊ฐ€ ์ฐธ๊ณ ํ•œ ๋ฌธ์„œ)
  • Java API Documentation → ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ(API) ์„ค๋ช…

์œ„ ๋งํฌ์—์„œ ์ œ๊ณตํ•˜๋Š” ๋‚ด์šฉ์€ ๊ฐ์ฒด์ง€ํ–ฅ ๊ฐœ๋…๊ณผ ์ƒ์†์˜ ๊ธฐ์ดˆ๋ฅผ ์„ค๋ช…ํ•˜๋Š” ์ž๋ฐ” ํŠœํ† ๋ฆฌ์–ผ ๋ฌธ์„œ๋กœ, ์˜ˆ์ œ ์ฝ”๋“œ๋„ ํฌํ•จ๋˜์–ด ์žˆ์–ด ๊ฐœ๋…์„ ์ตํžˆ๊ธฐ์— ์ข‹๋‹ค. ํ•˜์ง€๋งŒ ๋ฌธ์žฅ ๊ตฌ์กฐ๊ฐ€ ๋”ฑ๋”ฑํ•˜๊ณ  ๊ธฐ์ˆ  ์šฉ์–ด๊ฐ€ ๋งŽ์•„ ์ดˆ๋ณด์ž๊ฐ€ ์ฝ๊ธฐ์—” ์‰ฝ์ง€ ์•Š๋‹ค. ๐Ÿ˜ญ

 

 

ํŠœํ† ๋ฆฌ์–ผ ๋ฌธ์„œ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์ •๋ฆฌํ•˜์—ฌ ์ž‘์„ฑ๋œ ๋‚ด์šฉ์ž…๋‹ˆ๋‹ค. 

ํ‹€๋ฆฐ ๋ถ€๋ถ„์ด ์žˆ๋‹ค๋ฉด ๋ง์”€ํ•ด์ฃผ์„ธ์š” 

์ž๋ฐ” ๊ณต๋ถ€ํ•˜์‹œ๋Š” ๋ชจ๋“  ๋ถ„๋“ค ํŒŒ์ดํŒ…์ž…๋‹ˆ๋‹ค !!

 

 

์ถ”๊ฐ€ํ•  ๊ฒƒ 

- ๋‹ค์ค‘์ƒ์† ๊ฐœ๋… 

- interface