๐Ÿ’ป ๊ณต๋ถ€ ๊ธฐ๋ก/โ˜• Java

Java | ์ƒ์†(Inheritance)

  • -

๊ฒฝํ—˜์„ ํ†ตํ•ด์„œ ์–ป๋Š” ์ง€์‹์ด ์‹ค๋ ฅ์ด ๋˜๋Š”.. ๊ทธ๋Ÿฐ ์ƒ์ƒ ํ•ด๋ณธ ์  ์žˆ๋‚˜..?

 

 

๋‚œ ์ž์ฃผ ๊ทธใ„น..

 

 

 

์‹ค๋ ฅ์ด ๋˜๊ธฐ ์œ„ํ•œ.. ๋…ธ์˜ค๋ ฅ ์‹œ์ž‘

 

 


 

 

[์ถœ์ฒ˜ : ์ ํ”„ ํˆฌ ์ž๋ฐ”]

 

์ƒ์†(Inheritance)

์ž์‹ ํด๋ž˜์Šค๊ฐ€ ๋ถ€๋ชจ ํด๋ž˜์Šค์˜ ๊ธฐ๋Šฅ์„ ๊ทธ๋Œ€๋กœ ๋ฌผ๋ ค๋ฐ›์„ ์ˆ˜ ์žˆ๋Š” ์ƒ์† ๊ธฐ๋Šฅ

 

extends ํ‚ค์›Œ๋“œ ์‚ฌ์šฉ

Dog3 ํด๋ž˜์Šค๋Š” Animal3 ํด๋ž˜์Šค๋ฅผ ์ƒ์†

Dog3 ํด๋ž˜์Šค์— name ์ด๋ผ๋Š” ๊ฐ์ฒด๋ณ€์ˆ˜์™€ setName ์ด๋ผ๋Š” ๋ฉ”์†Œ๋“œ๋ฅผ ๋งŒ๋“ค์ง€ ์•Š์•˜์ง€๋งŒ, Animal3 ํด๋ž˜์Šค๋ฅผ ์ƒ์†ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ทธ๋Œ€๋กœ ์‚ฌ์šฉ ๊ฐ€๋Šฅ

class Animal3 {
    String name;

    void setName(String name) {
        this.name = name;
    }
}

class Dog3 extends Animal3 {
}

public class A3_Extends {
	public static void main(String[] args) {
        Dog3 dog = new Dog3();
        dog.setName("poppy");
	}
}

 

๋ถ€๋ชจ ํด๋ž˜์Šค์˜ ๊ธฐ๋Šฅ์„ ํ™•์žฅ

sleep ๋ฉ”์†Œ๋“œ ์ถ”๊ฐ€๋กœ ์ธํ•œ ๋ถ€๋ชจ ํด๋ž˜์Šค ๊ธฐ๋Šฅ ํ™•์žฅ

Dog3 ํด๋ž˜์Šค๋Š” Animal3 ํด๋ž˜์Šค๋ณด๋‹ค ์ข€ ๋” ๋งŽ์€ ๊ธฐ๋Šฅ(sleep ๋ฉ”์†Œ๋“œ ๋“ฑ์˜ ์ถ”๊ฐ€๋˜๋Š” ๊ธฐ๋Šฅ)์„ ๊ฐ€์ง€๊ฒŒ ๋จ.

class Animal3 {
    String name;

    void setName(String name) {
        this.name = name;
    }
}

class Dog3 extends Animal3 {
    void sleep() {
        System.out.println(this.name+" zzz");
    }
}

public class A3_Extends {
	public static void main(String[] args) {
        Dog3 dog = new Dog3();
        dog.setName("poppy");
	}
}

 

IS-A๊ด€๊ณ„

Dog3 ํด๋ž˜์Šค๋Š” Animal3 ํด๋ž˜์Šค๋ฅผ ์ƒ์†. (Dog3 ์€ Animal3 ํด๋ž˜์Šค์˜ ํ•˜์œ„ ๊ฐœ๋…)

์ด๋Ÿฌํ•œ ๊ด€๊ณ„๋ฅผ IS-A ๊ด€๊ณ„๋ผ๊ณ  ํ‘œํ˜„, ์ฆ‰ "Dog3 is a Animal3" ๋ผ๊ณ  ํ‘œํ˜„ํ•˜๋Š” IS-A ๊ด€๊ณ„.

 

IS-A ๊ด€๊ณ„ ํ˜•์„ฑ์— ๋”ฐ๋ฅธ ์˜ˆ์‹œ

์ฃผ์˜์‚ฌํ•ญ : ์ด๋Ÿฐ ๊ฒฝ์šฐ dog ๊ฐ์ฒด๋ฅผ Animal3 ์ž๋ฃŒํ˜•์œผ๋กœ ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ Dog3 ํด๋ž˜์Šค์— ์กด์žฌํ•˜๋Š” sleep ๋ฉ”์†Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค. (Animal3 ํด๋ž˜์Šค์˜ setName ๋ฉ”์†Œ๋“œ๋งŒ ์‚ฌ์šฉ ๊ฐ€๋Šฅ)

Animal3 dog = new Dog3();  // Dog is a Animal

 

๋ฐ˜๋Œ€์˜ ๊ฒฝ์šฐ

์ปดํŒŒ์ผ ์˜ค๋ฅ˜ ๋ฐœ์ƒ

๋ถ€๋ชจ ํด๋ž˜์Šค๋กœ ๋งŒ๋“  ๊ฐ์ฒด๋Š” ์ž์‹ ํด๋ž˜์Šค์˜ ์ž๋ฃŒํ˜•์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค.

Dog3 dog = new Animal3();

 

Object ํด๋ž˜์Šค

Object ํด๋ž˜์Šค๋Š” ๋”ฐ๋กœ ์ฝ”๋”ฉํ•˜์ง€ ์•Š์•„๋„ ์ž๋ฐ”์—์„œ ๋งŒ๋“ค์–ด์ง€๋Š” ๋ชจ๋“  ํด๋ž˜์Šค๋Š” Object ํด๋ž˜์Šค๋ฅผ ์ž๋™์œผ๋กœ ์ƒ์†๋ฐ›๊ฒŒ๋” ๋˜์–ด ์žˆ๋‹ค.

class Animal extends Object {
    String name;

    void setName(String name) {
        this.name = name;
    }
}

Object animal = new Animal();  // Animal is a Object
Object dog = new Dog();  // Dog is a Object

 

๋ฉ”์†Œ๋“œ ์˜ค๋ฒ„๋ผ์ด๋”ฉ(Method overriding)

๋ถ€๋ชจ ํด๋ž˜์Šค์˜ ๋ฉ”์†Œ๋“œ๋ฅผ ์ž์‹ ํด๋ž˜์Šค๊ฐ€ ๋™์ผํ•œ ํ˜•ํƒœ๋กœ ๋˜ ๋‹ค์‹œ ๊ตฌํ˜„ํ•˜๋Š” ํ–‰์œ„(= ๋ฉ”์†Œ๋“œ ๋ฎ์–ด์“ฐ๊ธฐ)

 

Dog3 ๋ฅผ ๋” ๊ตฌ์ฒดํ™” ์‹œํ‚ค๊ธฐ ์œ„ํ•ด HouseDog ํด๋ž˜์Šค๋ฅผ ๋งŒ๋“ค์–ด Dog3 ํด๋ž˜์Šค๋ฅผ ์ƒ์†ํ•˜๊ณ ์ž ํ•œ๋‹ค.

์•„๋ž˜์™€ ๊ฐ™์ด HouseDog3 ํด๋ž˜์Šค์— Dog3 ํด๋ž˜์Šค์™€ ๋™์ผํ•œ ํ˜•ํƒœ์˜ sleep ๋ฉ”์†Œ๋“œ๋ฅผ ๊ตฌํ˜„ํ•˜๋ฉด HouseDog3 ํด๋ž˜์Šค์˜ sleep ๋ฉ”์†Œ๋“œ๊ฐ€ Dog3 ํด๋ž˜์Šค์˜ sleep ๋ฉ”์†Œ๋“œ๋ณด๋‹ค ๋” ๋†’์€ ์šฐ์„ ์ˆœ์œ„๋ฅผ ๊ฐ–๊ฒŒ ๋˜์–ด HouseDog3 ํด๋ž˜์Šค์˜ sleep ๋ฉ”์†Œ๋“œ๊ฐ€ ํ˜ธ์ถœ๋œ๋‹ค.

class Animal3 {
    String name;

    void setName(String name) {
        this.name = name;
    }
}

class Dog3 extends Animal3 {
    void sleep() {
        System.out.println(this.name+" zzz");
    }
}

class HouseDog3 extends Dog3 {
    void sleep() {
        System.out.println(this.name + " zzz in house");
    }
}

public class A3_Extends {
    public static void main(String[] args) {
        HouseDog3 houseDog = new HouseDog3();
        houseDog.setName("happy");
        houseDog.sleep();  // happy zzz ์ถœ๋ ฅ
    }
}

 

๋ฉ”์†Œ๋“œ ์˜ค๋ฒ„๋กœ๋”ฉ(Method overloading)

์ž…๋ ฅํ•ญ๋ชฉ์ด ๋‹ค๋ฅธ ๊ฒฝ์šฐ ๋™์ผํ•œ ์ด๋ฆ„์˜ ๋ฉ”์†Œ๋“œ๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Œ.

 

์ด๋ฏธ sleep ์ด๋ผ๋Š” ๋ฉ”์†Œ๋“œ๊ฐ€ ์žˆ์ง€๋งŒ ๋™์ผํ•œ ์ด๋ฆ„์˜ sleep ๋ฉ”์†Œ๋“œ๋ฅผ ๋˜ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค.(์ž…๋ ฅ ํ•ญ๋ชฉ์ด ๋‹ค๋ฅผ ๊ฒฝ์šฐ๋งŒ ๊ฐ€๋Šฅ)

...

class HouseDog3 extends Dog3 {
    void sleep() {
        System.out.println(this.name + " zzz in house");
    }

    void sleep(int hour) {
        System.out.println(this.name+" zzz in house for " + hour + " hours");
    }
}

...

 

๋‹ค์ค‘ ์ƒ์†

ํด๋ž˜์Šค๊ฐ€ ๋™์‹œ์— ํ•˜๋‚˜ ์ด์ƒ์˜ ํด๋ž˜์Šค๋ฅผ ์ƒ์†๋ฐ›๋Š” ๊ฒƒ, ์ž๋ฐ”๋Š” ๋‹ค์ค‘ ์ƒ์†์„ ์ง€์›ํ•˜์ง€ ์•Š๋Š”๋‹ค.

 

 


 

 

์ž๋ฐ”๋Š” ๋ถ„๋ช…ํ•œ ๊ฐ์ฒด์ง€ํ–ฅ์˜ ํŠน์ง•์„ ๋‚˜ํƒ€๋‚ด๊ณ  ์žˆ๋‹ค.

๋ถˆํ•„์š”ํ•˜๊ณ  ์• ๋งค๋ชจํ˜ธํ•œ ๋ถ€๋ถ„์„ ํ†ตํ•ด ์˜ค๋ฅ˜์˜ ์กฐ์ง ํ•˜๋‚˜๊นŒ์ง€๋„ ์˜ˆ๋ฐฉํ•˜๊ณ ์ž ์˜ˆ๋ฐฉํ–ˆ๋‹ค๊ณ  ํ•œ๋‹ค.

ํ™•์‹คํžˆ ์ข‹์€ ์–ธ์–ด์ธ ๊ฒƒ ๊ฐ™๋‹ค.

 

 

 

๊ทผ๋ฐ ์–ด๋ ต๋„ค ^^..

Contents

ํฌ์ŠคํŒ… ์ฃผ์†Œ๋ฅผ ๋ณต์‚ฌํ–ˆ์Šต๋‹ˆ๋‹ค

์ด ๊ธ€์ด ๋„์›€์ด ๋˜์—ˆ๋‹ค๋ฉด ๊ณต๊ฐ ๋ถ€ํƒ๋“œ๋ฆฝ๋‹ˆ๋‹ค.