[Java] ์ƒ์† ( Extends )

2024. 5. 1. 12:22ยท๐Ÿ› ๏ธBackend/โ˜•Java

ํ™•์žฅ(Extends) == ์ƒ์†(Inheritance)

์ž๋ฐ”์—์„œ ํ™•์žฅ(์ƒ์†)์€ ํด๋ž˜์Šค์™€ ํด๋ž˜์Šค๊ฐ„์˜ ๊ด€๊ณ„๋ฅผ ์˜๋ฏธํ•˜๋ฉฐ ์ƒ์†์€ ๋ถ€๋ชจ ํด๋ž˜์Šค๊ฐ€ ์ž์‹ํด๋ž˜์Šค์—๊ฒŒ ๋ฉ”์„œ๋“œ๋‚˜ ํ•„๋“œ๋ฅผ

๋ฌผ๋ ค ์ฃผ๋Š”๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค. ( ์ƒ์†์„ ํ•˜๋Š” ์ชฝ์˜ ํด๋ž˜์Šค๋ฅผ ๋ถ€๋ชจํด๋ž˜์Šค, ์ƒ์†์„ ๋ฐ›๋Š” ํด๋ž˜์Šค๋ฅผ ์ž์‹ํด๋ž˜์Šค๋ผ๊ณ  ๋งํ•œ๋‹ค. )

 

์ž๋ฐ”์—์„œ ์ƒ์†๋ณด๋‹ค๋Š” ํ™•์žฅ์ด๋ผ๋Š” ํ‘œํ˜„์„ ํ•˜๋Š” ๊ฒƒ์ด ๋” ์˜ฌ๋ฐ”๋ฅธ ํ‘œํ˜„์ด๋‹ค.

์ด์œ ๋Š” ๋ถ€๋ชจํด๋ž˜์Šค๊ฐ€ ์ง„์งœ ๋ถ€๋ชจ๋กœ ๋งŒ๋“ค์–ด์ง„ ๊ฐ์ฒด ํด๋ž˜์Šค ์ž์‹ํด๋ž˜์Šค๊ฐ€ ์ง„์งœ ์ž์‹์œผ๋กœ ๋งŒ๋“  ๊ฐ์ฒด ํด๋ž˜์Šค๋กœ ๊ฐ€์ •์„ ํ•ด๋ณด์ž

๋ถ€๋ชจ์˜ ์—ญํ• ์„ ์ƒ์†๋ฐ›๋Š”๋‹ค๊ณ  ์ž์‹ํด๋ž˜์Šค๊ฐ€ ๋ถ€๋ชจ๊ฐ€ ๋  ์ˆœ ์—†๋‹ค. ์ด ๋ง์€ ์ƒ์†์ด๋ผ๋Š” ๊ฒƒ์€ ์˜ฌ๋ฐ”๋ฅด์ง€ ์•Š์€ ํ‘œํ˜„์ด๋ฉฐ, ํ™•์žฅ์ด๋ผ๋Š” ํ‘œํ˜„์ด ์˜ฌ๋ฐ”๋ฅธ ํ‘œํ˜„์ด ๋œ๋‹ค. ํ™•์žฅ์€ ๋ถ€๋ชจํด๋ž˜์Šค์—๊ฒŒ ๋ฐ›์€ ๊ฒƒ๋“ค์„ ์ž์‹ํด๋ž˜์Šค์—์„œ ํ™•์žฅํ•˜์—ฌ ์ด์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด๋‹ค.

 

 

# ์ƒ์†์„ ์•Œ๊ธฐ์— ์•ž์„œ

์ƒ์†์„ ์•Œ๊ธฐ ์œ„ํ•ด์„  ์ž๋ฐ” ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ์ž๋™์œผ๋กœ ๋งŒ๋“ค์–ด์ฃผ๋Š” ์š”์†Œ๋ฅผ ์•Œ์•„์•ผํ•œ๋‹ค.

์ƒ์†์„ ์•Œ๊ธฐ ์œ„ํ•ด ๋Œ€ํ‘œ์ ์œผ๋กœ ์ž๋ฐ” ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ์ž๋™์œผ๋กœ ๋งŒ๋“ค์–ด์ฃผ๋Š” ์š”์†Œ 2๊ฐ€์ง€๋ฅผ ๋ณด์—ฌ์ฃผ๊ฒ ๋‹ค.

1. Object ์ƒ์†

2. ๊ธฐ๋ณธ์ƒ์„ฑ์ž and super() ํ‚ค์›Œ๋“œ

public class Test extends Object { // Object ์ƒ์†

    public Test() { // ๊ธฐ๋ณธ์ƒ์„ฑ์ž
        super(); // ๊ธฐ๋ณธ์ƒ์„ฑ์ž์™€ ํ•จ๊ป˜ ์ž๋™์œผ๋กœ ๋งŒ๋“ค์–ด์ง€๋Š” ์š”์†Œ
    }
}

์ž๋ฐ”์—์„œ ํด๋ž˜์Šค๋ฅผ ๋งŒ๋“ค๋ฉด ๊ธฐ๋ณธ์ ์œผ๋กœ Objectํด๋ž˜์Šค๋ฅผ ์ƒ์†์„ ๋ฐ›๊ฒŒ๋œ๋‹ค. ๋ฌผ๋ก  ์ฒ˜์Œ์—๋Š” ์ƒ๋žต์ด ๋˜์–ด์ ธ์„œ ๋งŒ๋“ค์–ด ์ง„๋‹ค.

ํ•˜์ง€๋งŒ ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ๋Œ์•„๊ฐ€๋ฉด์„œ ์ž๋™์œผ๋กœ ์ƒ์†์„ ๋ฐ›๊ฒŒ ํ•œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ธฐ๋ณธ์ƒ์„ฑ์ž ๋˜ํ•œ ์ž๋ฐ”์—์„œ ์ž๋™์œผ๋กœ ๋งŒ๋“ค์–ด ์ค€๋‹ค.

๊ทธ๋ฆฌ๊ณ  ๊ธฐ๋ณธ์ƒ์„ฑ์ž์— ์ž๋™์œผ๋กœ super()ํ‚ค์›Œ๋“œ ๋˜ํ•œ ์ž๋ฐ” ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ์ž๋™์œผ๋กœ ๋งŒ๋“ค์–ด ์ค€๋‹ค.

 

super ํ‚ค์›Œ๋“œ?

1. super : ์ƒ์†๊ตฌ์กฐ์—์„œ ๋ถ€๋ชจ๋ฅผ ๊ฐ€๋ฆฌํ‚ฌ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ํ‚ค์›Œ๋“œ์ด๋‹ค. (๋ถ€๋ชจ ํด๋ž˜์Šค ์ž์ฒด๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ํ‚ค์›Œ๋“œ)

2. super() : ๋ถ€๋ชจ์˜ ์ƒ์„ฑ์ž๋ฅผ ํ˜ธ์ถœํ•ด์ฃผ๋Š” ํ‚ค์›Œ๋“œ์ด๋‹ค. ( ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ’ ์—†์„ ์‹œ ๊ธฐ๋ณธ์ƒ์„ฑ์ž ํ˜ธ์ถœ )

# ๊ฒฐ๊ตญ super() ํ‚ค์›Œ๋“œ๊ฐ€ ์ƒ์„ฑ์ž๋ฅผ ํ˜ธ์ถœํ•˜๋ฏ€๋กœ ๋ถ€๋ชจ ๋ฉ”์„œ๋“œ๋‚˜ ํ•„๋“œ๋ฅผ ์‚ฌ์šฉ ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด๋‹ค.

# ์ฃผ์˜ : ์ปดํŒŒ์ผ๋Ÿฌ๋Š” ์˜ค๋ฒ„๋กœ๋”ฉ ๋˜์–ด์žˆ๋Š” ์ƒ์„ฑ์ž๊ฐ€ ์žˆ์„ ๊ฒฝ์šฐ ๊ธฐ๋ณธ์ƒ์„ฑ์ž๋ฅผ ๋งŒ๋“ค์–ด ์ฃผ์ง€ ์•Š์œผ๋ฏ€๋กœ, ๋งค๊ฐœ๋ณ€์ˆ˜ ์ƒ์„ฑ์ž๋ฅผ ํ†ตํ•ด

์ง์ ‘ super()๋ฅผ ํ†ตํ•ด ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ๋„ฃ์–ด์ค˜์•ผ ์ปดํŒŒ์ผ ์˜ค๋ฅ˜๊ฐ€ ์•ˆ๋‚œ๋‹ค.

( super() = new ๋ถ€๋ชจ()  /  super("๊ฐ•์•„์ง€",12) = new ๋ถ€๋ชจ("๊ฐ•์•„์ง€",12)  ---> ์ด๋Ÿฐ์…ˆ์ด๋‹ค.

 

1. ํ™•์žฅ(์ƒ์†)

์ด์ œ ํด๋ž˜์Šค์˜ ํ™•์žฅ(์ƒ์†)์„ ๋ฐ›๋Š” ๊ณผ์ •์„ ๋ณด๋„๋กํ•˜์ž.

public class Animal { // ๋ถ€๋ชจํด๋ž˜์Šค

}

public class Dog extends Animal { // ์ž์‹ํด๋ž˜์Šค
    public Dog() { // ๊ธฐ๋ณธ์ƒ์„ฑ์ž super() ๋˜ํ•œ ๊ธฐ๋ณธ์œผ๋กœ ์ƒ์„ฑ(์ปดํŒŒ์ผ๋Ÿฌ)
        super(); // ๋ถ€๋ชจํด๋ž˜์Šค Animal ํด๋ž˜์Šค ํ˜ธ์ถœ
    }
}

์ž์‹ํด๋ž˜์Šค์—์„œ extendsํ‚ค์›Œ๋“œ๋ฅผ ์ด์šฉํ•˜๋ฉด ์ปดํŒŒ์ผ ๋‹จ๊ณ„์—์„œ ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ extendsํ‚ค์›Œ๋“œ๋ฅผ ๋ณด๊ณ  ์ƒ์†์„ ๊ตฌ๋ถ„ํ•  ์ˆ˜ ์žˆ๋‹ค.

์ฐธ๊ณ ๋กœ ์ž„์˜๋กœ ์ƒ์†๊ตฌ์กฐ๋ฅผ ๋งŒ๋“ค์–ด์„œ ์ด๋ ‡๊ฒŒ ์ƒ์†์„ ๋ฐ›๊ฒŒ๋˜๋ฉด ์ž๋™์œผ๋กœ ๋งŒ๋“ค์–ด์ง€๋Š” extends Object๋Š” ์‚ฌ๋ผ์ง€๊ฒŒ ๋œ๋‹ค.

๊ทธ๋ ‡์ง€๋งŒ ๋ถ€๋ชจํด๋ž˜์Šค์ธ Animal์€ extends Object ์ฆ‰, Objectํด๋ž˜์Šค๋ฅผ ์ƒ์†๋ฐ›๊ณ  ์žˆ์œผ๋‹ˆ ์ž์‹ํด๋ž˜์Šค ๋˜ํ•œ Object ํด๋ž˜์Šค๋ฅผ

ํ™•์žฅ(์ƒ์†)์„ ๋ฐ›๊ณ  ์žˆ๋Š” ์…ˆ์ด๋‹ค.

 

 

2. ํ™•์žฅ(์ƒ์†) ๋ฉ”์„œ๋“œ

super()ํ‚ค์›Œ๋“œ๋ฅผ ํ†ตํ•ด ์ž์‹ํด๋ž˜์Šค๋Š” ๋ถ€๋ชจ์˜ ๋ฉ”์„œ๋“œ๋ฅผ ์ด์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ๋œ๋‹ค.

๊ธฐ๋ณธ์ ์œผ๋กœ ์ž์‹ํด๋ž˜์Šค๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ์ž์‹ ํด๋ž˜์Šค์˜ ์ฃผ์†Œ๊ฐ’์„ ๋‹ด๊ณ  ์žˆ๋Š” ์ฐธ์กฐ๋ณ€์ˆ˜๋ฅผ ํ†ตํ•ด sound()๋ผ๋Š” ๋ถ€๋ชจํด๋ž˜์Šค์— ์žˆ๋Š” ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜๋ฉด ์ •์ƒ์ ์œผ๋กœ ์ž˜ ๋‚˜์˜ค๋Š” ๊ฑธ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด๊ฒŒ ๊ฐ€๋Šฅํ•œ ์ด์œ ๋Š” Dogํด๋ž˜์Šค์˜ ์ƒ์„ฑ์ž๋ฅผ ๋ณด๋ฉด ์•Œ ์ˆ˜ ์žˆ๋‹ค.

์ž์„ธํžˆ ๋ณด๋ฉด super()๋กœ ๋ถ€๋ชจ์˜ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ์žˆ๋Š” ๊ฑธ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

์ฆ‰, ๋ถ€๋ชจ์˜ ์ƒ์„ฑ์ž๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ sound() ๋ฉ”์„œ๋“œ๋ฅผ ๊ฐ€์ง€๊ณ  ์˜ค๋Š”๊ฑธ ๋ณผ ์ˆ˜ ์žˆ๋‹ค. ( ๋ถ€๋ชจ์˜ ๋ฉ”์„œ๋“œ๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋‹ค. )

public class Animal { // ๋ถ€๋ชจํด๋ž˜์Šค
    public void sound() {
    	System.out.println("๋™๋ฌผ์†Œ๋ฆฌ")
    }
}

public class Dog extends Animal { // ์ž์‹ํด๋ž˜์Šค
    public Dog() { 
        super(); 
    }
}

public class Main { // ๋ฉ”์ธํด๋ž˜์Šค
	public static void main(String[] args) {
		Dog dog = new Dog(); // ์ž์‹ํด๋ž˜์Šค ์ƒ์„ฑ
		dog.sound();  // ๊ฒฐ๊ณผ : "๋™๋ฌผ์†Œ๋ฆฌ"
    }
}

 

3. ํ™•์žฅ(์ƒ์†) / ๋ฉ”์„œ๋“œ ์˜ค๋ฒ„๋ผ์ด๋”ฉ(๋ฉ”์„œ๋“œ ์žฌ์ •์˜)

์•ž์—์„œ ๋ดค๋˜ ๋‚ด์šฉ์œผ๋กœ๋Š” ๋ถ€๋ชจํด๋ž˜์Šค์˜ ๋ฉ”์„œ๋“œ๋ฅผ ์ž์‹ํด๋ž˜์Šค๋Š” ๋ฐ›์„ ์ˆ˜ ์žˆ๋‹ค.

๋ถ€๋ชจํด๋ž˜์Šค์— ๋ฉ”์„œ๋“œ๋ฅผ ๋ฐ›์€ ์ž์‹ํด๋ž˜์Šค๋Š” ๊ทธ ๋ถ€๋ชจํด๋ž˜์Šค์˜ ๋ฉ”์„œ๋“œ๋ฅผ ์žฌ์ •์˜ํ•ด์„œ ๋‹ค๋ฅธ ์šฉ๋„๋กœ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

์ฆ‰, ๋ถ€๋ชจํด๋ž˜์Šค์˜ ๋ฉ”์„œ๋“œ๋ฅผ ์ž์‹ํด๋ž˜์Šค๊ฐ€ ๋™์ผํ•œ ๋ฉ”์„œ๋“œ๋ช…์œผ๋กœ ๋ฎ์–ด๋ฒ„๋ฆฌ๋Š” ๊ฒƒ์ด๋‹ค. ์ž์‹ํด๋ž˜์Šค๋กœ ํ˜ธ์ถœ์„ ํ–ˆ๊ธฐ๋•Œ๋ฌธ์— 

๊ฒฐ๊ตญ ์ž์‹ํด๋ž˜์Šค์˜ ๋ฉ”์„œ๋“œ๊ฐ€ ์šฐ์„ ์ˆœ์œ„๋ฅผ ๊ฐ–๋Š”๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋  ๊ฒƒ ๊ฐ™๋‹ค. ( sound() ๊ฒฐ๊ณผ => "๋ฉ๋ฉ" )

๊ทธ๋Ÿฌ๋ฉด ๋ฐ˜๋Œ€๋กœ ๋ถ€๋ชจ ํด๋ž˜์Šค๋ฅผ ํ˜ธ์ถœํ•˜๊ฒŒ ๋˜๋ฉด sound()์˜ ๊ฒฐ๊ณผ๋Š” "๋™๋ฌผ์†Œ๋ฆฌ"๊ฐ€ ๋‚˜์˜ฌ ๊ฒƒ์ด๋‹ค.

public class Animal { // ๋ถ€๋ชจํด๋ž˜์Šค
    public void sound() {
    	System.out.println("๋™๋ฌผ์†Œ๋ฆฌ")
    }
}

public class Dog extends Animal { // ์ž์‹ํด๋ž˜์Šค
    public Dog() { 
        super(); 
    }
    @Override  // override๋Š” ์ƒ๋žต์ด ๊ฐ€๋Šฅํ•˜์ง€๋งŒ ์–ด๋–ค๊ฑธ ์žฌ์ •์˜ ํ–ˆ๋Š”์ง€ ์•Œ๋ ค์ฃผ๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•ด์•ผํ•œ๋‹ค.
	public void sound() {
		System.out.println("๋ฉ๋ฉ")
    }
}

public class Main { // ๋ฉ”์ธํด๋ž˜์Šค
	public static void main(String[] args) {
		Dog dog = new Dog(); // ์ž์‹ํด๋ž˜์Šค ์ƒ์„ฑ
		dog.sound();  // ๊ฒฐ๊ณผ : "๋™๋ฌผ์†Œ๋ฆฌ"
    }
}

 

3. ํ™•์žฅ(์ƒ์†) / ํ•„๋“œ

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

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

ํ•„๋“œ ๊ฐ€๋ฆฌ๊ธฐ ๋˜๋Š” ํ•„๋“œ ์˜ค๋ฒ„๋ผ์ด๋”ฉ ์ด๋ผ๊ณ  ํ•œ๋‹ค. ์ฆ‰, ํ•„๋“œ๋ฅผ ๊ฐ€๋ฆฐ๋‹ค๋Š” ์˜๋ฏธ๋Š” ์˜ค๋ฒ„๋ผ์ด๋”ฉ์ฒ˜๋Ÿผ ๋ฎ์–ด ์”Œ์šฐ๋Š”๊ฒŒ ์•„๋‹Œ ๋™์ผํ•œ

์ด๋ฆ„์˜ ํ•„๋“œ๋ฅผ ํ•˜๋‚˜๋” ๋งŒ๋“ค์–ด์„œ ์ž์‹๋งŒ์ด ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค๋Š” ์˜๋ฏธ์ด๋‹ค. ๋ถ€๋ชจ ํด๋ž˜์Šค์˜ ํ•„๋“œ์™€ ์ž์‹ํด๋ž˜์Šค์˜ ํ•„๋“œ๋Š” ๋…๋ฆฝ์ ์ธ ๊ด€๊ณ„๊ฐ€ ๋œ๋‹ค๋Š” ์˜๋ฏธ์ด๋‹ค.

# ๋‹คํ˜•์„ฑ์ด ์ ์šฉ ์ฆ‰, ๋ถ€๋ชจํด๋ž˜์Šค ํƒ€์ž…์œผ๋กœ ๋ฐ›๊ฒŒ ๋œ๋‹ค๋ฉด ๋ถ€๋ชจํด๋ž˜์Šค์˜ ํ•„๋“œ์˜ ๊ฐ’๋งŒ์ด ํ˜ธ์ถœ ๋˜๋ฏ€๋กœ ๋ฉ”์„œ๋“œ ์žฌ์ •์˜๋ž‘ ๋‹ค๋ฅด๋‹ค.

# ๋‹คํ˜•์„ฑ์ด ์ ์šฉ๋œ ๋ฉ”์„œ๋“œ ํ˜ธ์ถœ์€ ์žฌ์ •์˜๋œ ์ž์‹๋ฉ”์„œ๋“œ๋ฅผ ์šฐ์„ ์ˆœ์œ„๋กœ ํ˜ธ์ถœํ•œ๋‹ค.

public class Animal { // ๋ถ€๋ชจํด๋ž˜์Šค
	String name = "๋™๋ฌผ"; // ํ•„๋“œ ์„ ์–ธ
}

public class Dog extends Animal { // ์ž์‹ํด๋ž˜์Šค
	String name = "๊ฐ•์•„์ง€";
    public Dog() { 
        super(); 
    }
}

public class Main { // ๋ฉ”์ธํด๋ž˜์Šค
	public static void main(String[] args) {
		Dog dog = new Dog(); // ์ž์‹ํด๋ž˜์Šค ์ƒ์„ฑ
        dog.name; // ๊ฒฐ๊ณผ : ๊ฐ•์•„์ง€
        // ํ•˜์ง€๋งŒ ์žฌ์ •์˜๋ฅผ ํ†ตํ•ด ๋ฎ์–ด์”Œ์šด๊ฒŒ ์•„๋‹ˆ๊ณ  ๋‹จ์ˆœํžˆ ๋ถ€๋ชจ์˜ ํ•„๋“œ๋ฅผ ๊ฐ€๋ฆฐ ๊ฒƒ ์ด๋‹ค.
    }
}

 

3. ํ™•์žฅ(์ƒ์†) / ์ƒ์„ฑ์ž

๋ถ€๋ชจํด๋ž˜์Šค์˜ ๋งค๊ฐœ๋ณ€์ˆ˜ ์ƒ์„ฑ์ž๊ฐ€ ์กด์žฌํ•  ๊ฒฝ์šฐ ์ž์‹ํด๋ž˜์Šค์—์„œ๋„ ๋™์ผํ•˜๊ฒŒ ๋งค๊ฐœ๋ณ€์ˆ˜ ์ƒ์„ฑ์ž๋ฅผ ๋งŒ๋“ค์–ด์ค˜์•ผ ํ•œ๋‹ค.

๊ทธ ์ด์œ ๋Š” ์•ž์„œ ๋งํ–ˆ๋˜ super()ํ‚ค์›Œ๋“œ๋Š” ์ƒ์„ฑ์ž๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ๊ฒƒ ์ด๊ธฐ ๋•Œ๋ฌธ์— ๋ถ€๋ชจ ์ƒ์„ฑ์ž ํ˜ธ์ถœํ•  ๋•Œ ๋งค๊ฐœ๋ณ€์ˆ˜ ์ƒ์„ฑ์ž๊ฐ€

์กด์žฌํ•œ๋‹ค๋ฉด ๊ธฐ๋ณธ์ƒ์„ฑ์ž๋Š” ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ๋งŒ๋“ค์–ด ์ฃผ์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์ง์ ‘ super()ํ‚ค์›Œ๋“œ ์•ˆ์— ๋งค๊ฐœ๊ฐ’์„ ๋„ฃ์–ด์ค˜์•ผ ํ•œ๋‹ค.

public class Animal { // ๋ถ€๋ชจํด๋ž˜์Šค

	String name;
	// ์ปดํŒŒ์ผ๋Ÿฌ๋Š” ์˜ค๋ฒ„๋กœ๋”ฉ๋œ ์ƒ์„ฑ์ž๊ฐ€ ์กด์žฌํ•  ๊ฒฝ์šฐ ๊ธฐ๋ณธ์ƒ์„ฑ์ž๋ฅผ ๋งŒ๋“ค์–ด ์ฃผ์ง€ ์•Š๋Š”๋‹ค. 
	// ์ฆ‰, ํ•„์š”ํ•˜๋ฉด ์ง์ ‘ ๋งŒ๋“ค์–ด์•ผํ•จ.
	public Aniaml(String name) {
    	this.name = name;
    }
}

public class Dog extends Animal { // ์ž์‹ํด๋ž˜์Šค
    public Dog(String name) { 
        super(name);
    }
}
public class Main { // ๋ฉ”์ธํด๋ž˜์Šค
	public static void main(String[] args) {
		Dog dog = new Dog("๊ฐ•์•„์ง€"); // ์ž์‹ํด๋ž˜์Šค ์ƒ์„ฑ
	}
}

 

์ƒ์†์˜ ํฌํ•จ๊ด€๊ณ„ ๋ฐ ํ™•์žฅ ๊ด€๊ณ„

( ํ™•์žฅ๊ด€๊ณ„ / ํฌํ•จ๊ด€๊ณ„ : ํด๋ž˜์Šค ๊ฐ„์˜ ๊ด€๊ณ„๋งบ๊ธฐ๋Š” ๋…ผ๋ฆฌ์ ์œผ๋กœ ์ž˜ ํŒ๋‹จํ•ด์•ผํ•œ๋‹ค. )

ํ™•์žฅ(์ƒ์†)๊ด€๊ณ„ / ํฌํ•จ๊ด€๊ณ„

์ž๋™์ฐจ ํด๋ž˜์Šค => ์ฐจ๋ฌธ ํด๋ž˜์Šค ํฌํ•จ๊ด€๊ณ„

์ž๋™์ฐจ ํด๋ž˜์Šค => ์ฐจ์ข…(์•„์šฐ๋””)ํด๋ž˜์Šค ์ƒ์†๊ด€๊ณ„

์ž๋™์ฐจ ํด๋ž˜์Šค์—์„œ ์—”์ง„๊ณผ ๊ฐ™์€ ์ž๋™์ฐจ์˜ ์ƒ์†๊ด€๊ณ„๊ฐ€ ์•„๋‹Œ ํด๋ž˜์Šค๋Š” ํฌํ•จ๊ด€๊ณ„๋ฅผ ๋„๊ณ ์žˆ๋‹ค.

์—”์ง„๊ฐ™์€ ๊ฒฝ์šฐ์—๋„ ์ข…๋ฅ˜๊ฐ€ ๋‹ค์–‘ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์—”์ง„์„ ์ƒ์†๋ฐ›๋Š” ๋‹ค๋ฅธ ์—”์ง„์ด ์กด์žฌ?

 

์ฐธ๊ณ  ( Object ํด๋ž˜์Šค )

์ž๋ฐ”์—์„œ ๋ชจ๋“  ํด๋ž˜์Šค๋Š” Objectํด๋ž˜์Šค๋ฅผ ์ƒ์†๋ฐ›๋Š”๋‹ค ์ด๊ฑด ํ•„์ˆ˜์ด๊ธฐ์— ์ž๋ฐ”์—์„œ ๊ตณ์ด extends๋ฅผ ๋ช…์‹œ๋ฅผ ์•ˆํ•ด๋„

์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ์•Œ์•„์„œ ๋„ฃ์–ด์ค€๋‹ค. ( ์ฐธ๊ณ ๋กœ ์ž๋ฐ”๋Š” ๋‹จ์ผ ์ƒ์†๋งŒ์„ ํ—ˆ์šฉํ•œ๋‹ค. ๋‹ค์ค‘ ์ƒ์†์ด ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค. )

๊ทธ๋Ÿผ ์—ฌ๊ธฐ์„œ ์ƒ๊ฐํ•ด ๋ณผ ์ˆ˜ ์žˆ๋‹ค. ๋ชจ๋“  ํด๋ž˜์Šค๋“ค์€ Object๋ฅผ ์ƒ์†๋ฐ›๋Š”๋ฐ ๋งŒ์•ฝ ๋‚ด๊ฐ€ ๋‹ค๋ฅธ ํด๋ž˜์Šค๋ฅผ ์ƒ์† ๋ฐ›๊ฒŒ ๋œ๋‹ค๋ฉด?

๊ทธ๋Ÿผ Object์˜ ์ƒ์†์„ ๋Š๊ณ  ๋‹ค๋ฅธ ํด๋ž˜์Šค์˜ ์ƒ์†์„ ๋ฐ›๋Š” ๊ฒƒ์ผ๊นŒ? ์ง์ ‘ ํ™•์ธ์„ ํ•ด๋ณด๋‹ˆ ์ƒ์†์„ ๋Š๋Š” ๊ฒƒ์ด ๋งž์•˜๋‹ค.

์ƒ์†์„ ๋Š๋Š”๋‹ค๋Š” ํ‘œํ˜„๋ณด๋‹ค๋Š” ๋‹จ์ผ ์ƒ์†์„ ์ž˜ ์ง€ํ‚จ๋‹ค๋Š” ํ‘œํ˜„์ด ๋” ๋งž์„ ๊ฒƒ ๊ฐ™๋‹ค.

 

์ƒ์†์„ ์•Œ๊ณ ์žˆ๋‹ค๋ฉด ์กฐ๊ธˆ๋งŒ ์ƒ๊ฐ์„ ํ•ด๋ณด๋ฉด ์‰ฝ๊ฒŒ ์•Œ ์ˆ˜ ์žˆ๋Š” ๋ถ€๋ถ„์ด๋‹ค.

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

๋ฐ›๊ณ  ์žˆ๋‹ค๋ฉด ์ž์‹ํด๋ž˜์Šค ๋˜ํ•œ ๊ทธ ๋ถ€๋ชจํด๋ž˜์Šค๊ฐ€ ์ƒ์†์„ ํ†ตํ•ด ๋ฐ›์•„์˜จ ๋ฉ”์„œ๋“œ๋‚˜ ํ•„๋“œ๋ฅผ ์ด์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด ์ž๋ฐ”์˜ ์ƒ์†์ด๋‹ค.

 

๊ทธ๋ ‡๋‹ค๋ฉด ๋ถ€๋ชจํด๋ž˜์Šค๊ฐ€ ์ƒ์†์„ ์•ˆ๋ฐ›๋Š” ๊ฒฝ์šฐ๋ผ๋ฉด Objectํด๋ž˜์Šค๋ฅผ ๋‹น์—ฐํžˆ ์ƒ์†์„ ๋ฐ›๊ณ  ์žˆ๋‹ค๊ณ  ์ƒ๊ฐ์„ ํ•ด๋ณผ ์ˆ˜ ์žˆ๋‹ค.

๊ทธ๋ ‡๋‹ค. ๋ถ€๋ชจํด๋ž˜์Šค์˜ ๋ถ€๋ชจํด๋ž˜์Šค์˜ ๋ถ€๋ชจํด๋ž˜์Šค๋กœ ์˜ฌ๋ผ๋‹ค๊ฐ€ ๋ณด๋ฉด ์–ด์ฐจํ”ผ Objectํด๋ž˜์Šค๋ฅผ ์ƒ์†์„ ๋ฐ›๋Š” ๊ตฌ์กฐ์ผํ…Œ๋‹ˆ

๋ชจ๋“  ํด๋ž˜์Šค๋Š” Object์ƒ์†์„ ํ•„์ˆ˜์ ์œผ๋กœ ๋ฐ›์„ ์ˆ˜ ๋ฐ–์— ์—†๋‹ค๋Š” ์–˜๊ธฐ๋‹ค.

'๐Ÿ› ๏ธBackend > โ˜•Java' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[Java] ๋ณ€์ˆ˜ ์ดˆ๊ธฐํ™”์— ๋Œ€ํ•œ ์ดํ•ด  (2) 2024.11.05
[Java] Annotation ์ด๋ž€? ( ์• ๋…ธํ…Œ์ด์…˜ )  (4) 2024.11.05
[Java] JVM ๋™์ž‘ ์›๋ฆฌ  (2) 2024.10.23
[Java] ํด๋ž˜์Šค์™€ ๊ฐ์ฒด์˜ ์ •์˜  (9) 2024.10.05
[Java] ์˜ˆ์™ธ ( Exception )  (2) 2024.04.26
'๐Ÿ› ๏ธBackend/โ˜•Java' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • [Java] Annotation ์ด๋ž€? ( ์• ๋…ธํ…Œ์ด์…˜ )
  • [Java] JVM ๋™์ž‘ ์›๋ฆฌ
  • [Java] ํด๋ž˜์Šค์™€ ๊ฐ์ฒด์˜ ์ •์˜
  • [Java] ์˜ˆ์™ธ ( Exception )
junbin2
junbin2
java.lang.NullPointerException
  • junbin2
    bin's Development Diary
    junbin2
  • ์ „์ฒด
    ์˜ค๋Š˜
    ์–ด์ œ
    • ์ „์ฒด๋ณด๊ธฐ (161) N
      • ๐ŸŽ“๋ฐฉ์†กํ†ต์‹ ๋Œ€ํ•™๊ต (27) N
        • ๐Ÿ–ฅ๏ธ์ปดํ“จํ„ฐ๊ณผํ•™๊ณผ (1)
        • ๐ŸŒ์œ ๋น„์ฟผํ„ฐ์Šค ์ปดํ“จํŒ… (11)
        • โš™๏ธ์ปดํ“จํ„ฐ์˜ ์ดํ•ด (11)
        • ๐Ÿ’ป์ปดํ“จํ„ฐ๊ณผํ•™ ๊ฐœ๋ก  (1) N
        • ๐Ÿ›๏ธ์„ธ๊ณ„์˜์ •์น˜์™€๊ฒฝ์ œ (3)
      • ๐Ÿ› ๏ธBackend (57)
        • ๐Ÿ“š๋ฐฑ์—”๋“œ ๊ณต๋ถ€ (4)
        • โ˜•Java (23)
        • ๐ŸŒณSpring (13)
        • โš™๏ธC (1)
        • โšกPython (13)
        • JavaScript (1)
        • ๐Ÿ›ข๏ธDatabase (0)
        • Algorithm Problem Solving (2)
      • ๐ŸŒ Network (7)
        • ๐Ÿ“œHTTP (7)
      • ๐Ÿš€DevOps (1)
      • Data Structure (1)
      • โ›บ์ŠคํŒŒ๋ฅดํƒ€์ฝ”๋”ฉํด๋Ÿฝ (65)
      • ์ •๋ณด (1)
      • ์ •๋ฆฌ๊ฐ€ ํ•„์š”ํ•œ ๊ธ€ (2)
  • ๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

    • ํ™ˆ
    • ํƒœ๊ทธ
    • ๋ฐฉ๋ช…๋ก
  • ๋งํฌ

    • GitHub
  • ๊ณต์ง€์‚ฌํ•ญ

  • ์ธ๊ธฐ ๊ธ€

  • ํƒœ๊ทธ

    ์œ ๋น„์ฟผํ„ฐ์Šค ์ปดํ“จํŒ…๊ฐœ๋ก 
    ์ปดํŒŒ์ผ๋Ÿฌ
    Python
    spring
    ์Šคํ”„๋ง
    ์œ ๋น„์ฟผํ„ฐ์Šค ์ปดํ“จํŒ…
    ์†Œํ”„ํŠธ์›จ์–ด
    Spring Framework
    ๋‹คํ˜•์„ฑ
    ์ž๋ฐ”
    ๋ฐฉ์†ก๋Œ€
    ์ž…์ถœ๋ ฅ
    Java
    ๋ฐฉํ†ต๋Œ€
    ๋ฐฉ์†กํ†ต์‹ ๋Œ€ํ•™๊ต
    ํ•˜๋“œ์›จ์–ด
    ์œ ๋น„์ฟผํ„ฐ์Šค
    ํŒŒ์ด์ฌ
    ํด๋ผ์šฐ๋“œ
    ์ปดํ“จํ„ฐ์˜ ์ดํ•ด
  • ์ตœ๊ทผ ๋Œ“๊ธ€

  • ์ตœ๊ทผ ๊ธ€

  • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.1
junbin2
[Java] ์ƒ์† ( Extends )
์ƒ๋‹จ์œผ๋กœ

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”