めけゃくけゃ ι–‹η™Ίθ€…πŸ¦Ύ
μ½”λ”© 짐 πŸ’ͺ
めけゃくけゃ ι–‹η™Ίθ€…πŸ¦Ύ
  • μΉ΄ν…Œκ³ λ¦¬ (135)
    • 개발 ν™˜κ²½ ꡬ좕 (12)
      • 개발 ν™˜κ²½ (5)
      • DB (0)
      • Node.js (4)
      • ν˜•μƒ 관리 (2)
      • Spring (1)
    • μ›Ή (11)
      • React (5)
      • 슀파λ₯΄νƒ€μ½”λ”©ν΄λŸ½__μ›Ή (6)
    • λͺ¨λ°”일 (2)
      • μ•ˆλ“œλ‘œμ΄λ“œ (2)
    • ν”„λ‘œκ·Έλž˜λ° μ–Έμ–΄ (55)
      • C (13)
      • Python (15)
      • SQL (5)
      • Java (22)
    • 사물인터넷 (11)
      • 아두이노 (11)
    • 일상 (31)
      • λ§›μ§‘ (13)
      • λž­ν‚Ήλ‹­μ»΄ (4)
      • ν›„κΈ° (11)
      • μš”λ¦¬ (3)
      • μž‘λ‹΄ (0)
    • ꡐ양 (4)
      • 심리학 (3)
      • ν…Œλ‹ˆμŠ€ (1)
    • 자격증 (9)
      • μ •λ³΄μ²˜λ¦¬κΈ°μ‚¬ (9)

λΈ”λ‘œκ·Έ 메뉴

  • πŸ’» github

인기 κΈ€

졜근 κΈ€

ν‹°μŠ€ν† λ¦¬

hELLO Β· Designed By μ •μƒμš°.
めけゃくけゃ ι–‹η™Ίθ€…πŸ¦Ύ

μ½”λ”© 짐 πŸ’ͺ

[Java] μžλ°” μΊμŠ€νŒ…
ν”„λ‘œκ·Έλž˜λ° μ–Έμ–΄/Java

[Java] μžλ°” μΊμŠ€νŒ…

2023. 2. 1. 00:37

[ μžλ°” μΊμŠ€νŒ… ]

더보기

- μžλ°”μ—μ„œμ˜ μΊμŠ€νŒ…μ΄λž€ κ°μ²΄λ“€μ˜ ν˜• λ³€ν™˜μ„ 의미

- 상속 κ΄€κ³„μ˜ 객체듀에 ν•œν•¨

 

- ν•˜μœ„ 클래슀(큰 λ©”λͺ¨λ¦¬) → μƒμœ„ 클래슀(μž‘μ€ λ©”λͺ¨λ¦¬) ν˜•λ³€ν™˜

  · λ¬΅μ‹œμ μœΌλ‘œ κ°€λŠ₯

  · μ—…μΊμŠ€νŒ…μ„ 의미

 

- μƒμœ„ 클래슀(μž‘μ€ λ©”λͺ¨λ¦¬) → ν•˜μœ„ 클래슀(큰 λ©”λͺ¨λ¦¬) ν˜•λ³€ν™˜

  · λͺ…μ‹œμ μœΌλ‘œ μ„ μ–Έν•΄μ•Ό 함

  · Casting μ—°μ‚°μžμΈ  ( )λ₯Ό μ‚¬μš©ν•˜μ—¬ ν˜• λͺ…μ‹œ ν•„μš”

  · λ‹€μš΄μΊμŠ€νŒ…μ„ 의미

 

기본데이터 νƒ€μž…μ˜ ν˜• λ³€ν™˜κ³Ό ꡬ뢄
μ°Έκ³  πŸ‘‰ [Java] μžλ°” ν˜•λ³€ν™˜

 

 

[ μ—…μΊμŠ€νŒ…(Upcasting) ]

더보기

- μƒμœ„ 클래슀둜의 ν˜• λ³€ν™˜

- ν•˜μœ„ 클래슀(sub class) → μƒμœ„ 클래슀 (super class)

  (ν•˜μœ„ ν΄λž˜μŠ€λŠ” μƒμœ„ 클래슀의 μ„œλΈŒνƒ€μž…)

- μ»΄νŒŒμΌλŸ¬μ— μ˜ν•΄ μžλ™ λ³€ν™˜

- 상속 κ³„μΈ΅μ˜ 츑면을 κ³ λ €

 

[ μ—…μΊμŠ€νŒ… 예제 ]

class Animal{
	void display() {
		System.out.println("Animal 클래슀");
	}
}

class Ant extends Animal{
	void display() {
		System.out.println("Ant 클래슀");
	}
	
	void displayAnt() {
		System.out.println("물개미 μž…λ‹ˆλ‹€.");
	}
}

public class TestCode {
	
	public static void main(String[] args) {

		Ant ant = new Ant();
		ant.display();
		ant.displayAnt();
		
		// 상속 κ΄€κ³„μ—μ„œμ˜ μ°Έμ‘° λ‹€ν˜•μ„±μ„ μ΄μš©ν•œ μ„ μ–Έ (1)
		Animal ant2 = new Ant();
		ant2.display();
//		ant2.displayAnt();	Ant 클래슀의 μƒμœ„ν΄λž˜μŠ€μΈ Animal 클래슀둜 μ„ μ–Έλ˜μ—ˆμœΌλ―€λ‘œ μ ‘κ·Ό 멀버 κ°μ†Œ
		
		// λ³€μˆ˜ μ—…μΊμŠ€νŒ…μ„ μ΄μš©ν•œ μ„ μ–Έ (2)
		Animal upcasting_ant = ant;
		// -- 이 λ•Œ Animal 클래슀의 display()에 μ ‘κ·Ό x
		// -- Override된 Ant 클래슀의 display()둜 μ‹€ν–‰ 됨
		upcasting_ant.display();
//		upcasting_ant.displayAnt();
	}
}

/* [좜λ ₯ κ²°κ³Ό]
    Ant 클래슀
    물개미 μž…λ‹ˆλ‹€.
    Ant 클래슀
    Ant 클래슀
*/
μ˜€λ²„λΌμ΄λ”© νŠΉμ„±μƒ μ½”λ“œκ°€ μ‹€ν–‰ν•˜λŠ” λŸ°νƒ€μž„ ν™˜κ²½μ—μ„œ
동적 바인딩 λ˜μ—ˆκΈ° λ•Œλ¬Έμ—

μ—… μΊμŠ€νŒ… μΈμŠ€ν„΄μŠ€μΈ ant2와 upcasting_ant의
μ˜€λ²„λΌμ΄λ”© λ©”μ†Œλ“œμΈ display() 호좜 μ‹œ 
Animal 클래슀의 display() { "Animal 클래슀" }κ°€ μ•„λ‹Œ
Ant 클래슀의 display() { "Ant 클래슀" } κ°€ 호좜

 

[ μ—…μΊμŠ€νŒ…μ˜ 이유 ]

더보기

- κ³΅ν†΅μ μœΌλ‘œ 관리 κ°€λŠ₯ν•œ μž‘μ—…λ“€μ˜ κ°„μ†Œν™”λœ 핸듀링 κ°€λŠ₯

- λ§Œμ•½ [κ·Έλ¦Ό1]κ³Ό 같은 상속 κ΄€κ³„μ˜ ν΄λž˜μŠ€λ“€μ΄ μžˆλ‹€ κ°€μ •ν•  경우

[κ·Έλ¦Ό 1]

- 기쑴의 μžμ‹ ν΄λž˜μŠ€λ“€μ€ μ„œλ‘œ λ‹€λ₯Έ 객체λ₯Ό μ„ μ–Έν•˜μ—¬ μ‚¬μš©ν–ˆμ–΄μ•Ό 함

 

[ 기쑴의 경우 ]

class Colors{ }

class White extends Colors{ }
class Blue extends Colors{ }
class Red extends Colors{ }

public class TestCode {
	public static void main(String[] args) {
		White[] white = new White[10];
		white[0] = new White();
		white[1] = new White();
		
		Blue[] blue = new Blue[10];
		blue[0] = new Blue();
		blue[1] = new Blue();
		
		Red[] red = new Red[10];
		red[0] = new Red();
		red[1] = new Red();
	}
}
이 λ•Œ μ—…μΊμŠ€νŒ…μ„ ν™œμš©ν•˜λ©΄ κ³΅ν†΅μ˜ νƒ€μž…μœΌλ‘œ λ¬Άμ–΄ 관리 κ°€λŠ₯

 

[ μ—…μΊμŠ€νŒ… ν™œμš© ]

class Colors{ }

class White extends Colors{ }
class Blue extends Colors{ }
class Red extends Colors{ }

public class TestCode {
	public static void main(String[] args) {
		
		// 상속 관계λ₯Ό λ§Ίμ–΄ λΆ€λͺ¨ 클래슀둜의 μ—…μΊμŠ€νŒ…μ΄ κ°€λŠ₯ν•  경우
		// ν•˜λ‚˜μ˜ κ³΅ν†΅λœ νƒ€μž…μœΌλ‘œ λ¬Άμ–΄ 관리 κ°€λŠ₯
		// 가독성 ↑ μœ μ§€λ³΄μˆ˜ ↑
		Colors[] colors = new Colors[10];
		colors[0] = new White();
		colors[1] = new White();
		colors[2] = new Blue();
		colors[3] = new Blue();
		colors[4] = new Red();
		colors[5] = new Red();
	}
}

 

 

 

[ λ‹€μš΄μΊμŠ€νŒ…(Downcasting) ]

더보기

- μƒμœ„ 클래슀 → ν•˜μœ„ν΄λž˜μŠ€λ‘œμ˜ ν˜• λ³€ν™˜

- μ›μΉ™μ μœΌλ‘œλŠ” λΆˆκ°€λŠ₯ν•˜λ‚˜ λͺ…μ‹œμ  μΊμŠ€νŒ…μ„ 톡해 ν•΄κ²°

 

[ λ‹€μš΄ μΊμŠ€νŒ… 예제 ]

class Animal{
	void display() {
		System.out.println("Animal 클래슀");
	}
}

class Ant extends Animal{
	void display() {
		System.out.println("Ant 클래슀");
	}
	
	void displayAnt() {
		System.out.println("물개미 μž…λ‹ˆλ‹€.");
	}
}

public class TestCode {
	
	public static void main(String[] args) {
		
		// Animal(upcasting_ant) ← Ant(new Ant())둜 μ—…μΊμŠ€νŒ… 	
		Animal upcasting_ant = new Ant();
		upcasting_ant.display();
		
		// Ant(down_ant) ← Animal(upcasting_ant)둜 λ‹€μš΄ μΊμŠ€νŒ…
		Ant down_ant = (Ant)upcasting_ant;
		down_ant.displayAnt();
		// ==
		((Ant)upcasting_ant).displayAnt();
	}
}

/* [좜λ ₯ κ²°κ³Ό]
    Ant 클래슀
    물개미 μž…λ‹ˆλ‹€.
    물개미 μž…λ‹ˆλ‹€.
*/

 

 

# μ°Έκ³  λΈ”λ‘œκ·Έ : https://inpa.tistory.com/entry/JAVA-β˜•-μ—…μΊμŠ€νŒ…-λ‹€μš΄μΊμŠ€νŒ…-ν•œλ°©-μ΄ν•΄ν•˜κΈ°
μ €μž‘μžν‘œμ‹œ λΉ„μ˜λ¦¬ λ³€κ²½κΈˆμ§€
    'ν”„λ‘œκ·Έλž˜λ° μ–Έμ–΄/Java' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€
    • [Java] μžλ°” λžŒλ‹€ (Lambda)
    • [Java] μžλ°” λ‚΄λΆ€ν΄λž˜μŠ€(쀑첩 클래슀) - μŠ€νƒœν‹±ν΄λž˜μŠ€&μΈμŠ€ν„΄μŠ€ν΄λž˜μŠ€&μ§€μ—­ν΄λž˜μŠ€&읡λͺ…ν΄λž˜μŠ€
    • [Java] μžλ°” 좔상 λ©”μ†Œλ“œ, 좔상 ν΄λž˜μŠ€μ™€ μΈν„°νŽ˜μ΄μŠ€
    • [Java] μžλ°” this, this()와 super, super()
    めけゃくけゃ ι–‹η™Ίθ€…πŸ¦Ύ
    めけゃくけゃ ι–‹η™Ίθ€…πŸ¦Ύ
    πŸ‘Š λΈ”λ‘œκ·Έλ„ 근성이닀? πŸ‘Š

    ν‹°μŠ€ν† λ¦¬νˆ΄λ°”