πŸ“Œμƒμ†

  • λ‹€λ₯Έ ν΄λž˜μŠ€κ°€ κ°€μ§€κ³  μžˆλŠ” 멀버(ν•„λ“œ, λ©”μ†Œλ“œ)듀을 μƒˆλ‘œ μž‘μ„±ν•  ν΄λž˜μŠ€μ—μ„œ 직접 λ§Œλ“€μ§€ μ•Šκ³ 
    상속을 λ°›μ•„ μƒˆ ν΄λž˜μŠ€κ°€ 본인의 λ©€λ²„μ²˜λŸΌ μ‚¬μš©ν•  수 μžˆλŠ” κΈ°λŠ₯
  • 클래슀 κ°„μ˜ μƒμ†μ‹œ extends ν‚€μ›Œλ“œ μ‚¬μš©
  • λΆ€λͺ¨ 클래슀의 λ©”μ†Œλ“œ import없이 호좜 κ°€λŠ₯
  • λͺ¨λ“  ν΄λž˜μŠ€λŠ” Object클래슀의 μžμ‹ 클래슀
package μ„ μ–ΈλΆ€
μ ‘κ·Όμ œν•œμž class 클래슀λͺ… extends 클래슀λͺ… {}

- 클래슀 λ‹€μ΄μ–΄κ·Έλž¨

클래슀의 상속 : μ‹€μ„  + 빈 μ„Έλͺ¨

  • μžμ‹ ─▷ λΆ€λͺ¨
  • 후손 ─▷ 쑰상
  • ν•˜μœ„ ─▷ μƒμœ„
  • this ─▷ super

πŸ“Œμƒμ†μ˜ λͺ©μ 

  • 클래슀의 μž¬μ‚¬μš©
  • μ—°κ΄€λœ 일련의 ν΄λž˜μŠ€λ“€μ— λŒ€ν•œ 곡톡적인 κ·œμ•½ μ •μ˜

πŸ“Œμƒμ†μ˜ μž₯점

  1. 보닀 적은 μ–‘μ˜ μ½”λ“œλ‘œ μƒˆλ‘œμš΄ 클래슀 μž‘μ„± κ°€λŠ₯
  2. μ½”λ“œλ₯Ό κ³΅ν†΅μ μœΌλ‘œ κ΄€λ¦¬ν•˜κΈ°λ•Œλ¬Έμ— μ½”λ“œμ˜ μΆ”κ°€ 및 λ³€κ²½ 용이
  3. μ½”λ“œμ˜ 쀑볡을 μ œκ±°ν•˜μ—¬ ν”„λ‘œκ·Έλž¨μ˜ 생산성과 μœ μ§€λ³΄μˆ˜μ— κΈ°μ—¬

πŸ“Œλ‹¨μΌμƒμ†

  • ν΄λž˜μŠ€κ°„μ˜ 관계가 닀쀑 상속보닀 λͺ…ν™•ν•˜κ³  μ‹ λ’°μ„±μžˆλŠ” μ½”λ“œ μž‘μ„±
  • μžλ°”μ—μ„œλŠ” ν΄λž˜μŠ€κ°„μ˜ 닀쀑상속 λΆˆκ°€

- super.

  • 상속을 ν†΅ν•œ μžμ‹ 클래슀 μ •μ˜μ‹œ ν•΄λ‹Ή μžμ‹ 클래슀의 λΆ€λͺ¨ 객체λ₯Ό κ°€λ¦¬ν‚€λŠ” μ°Έμ‘°λ³€μˆ˜
  • μžμ‹ 클래슀 λ‚΄μ—μ„œ λΆ€λͺ¨ 클래슀 객체에 μ ‘κ·Όν•˜μ—¬ ν•„λ“œλ‚˜ λ©”μ†Œλ“œ ν˜ΈμΆœμ‹œ μ‚¬μš©

- super()

  • λΆ€λͺ¨ 객체의 μƒμ„±μžλ₯Ό ν˜ΈμΆœν•˜λŠ” λ©”μ†Œλ“œ
  • 기본적으둜 μžμ‹ μƒμ„±μžμ— λΆ€λͺ¨ μƒμ„±μž 포함
    λ”°λΌμ„œ λΆ€λͺ¨ ν΄λž˜μŠ€μ— κΈ°λ³Έ μƒμ„±μž μ—†μœΌλ©΄ μžμ‹ ν΄λž˜μŠ€μ—λ„ κΈ°λ³Έ μƒμ„±μž μž‘μ„± λΆˆκ°€
  • μžμ‹ 객체 μƒμ„±μ‹œ λΆ€λͺ¨ 객체가 λ¨Όμ € μƒμ„±λ˜κ³ 
    κ·Έ ν›„ μžμ‹κ°μ²΄κ°€ λΆ€λͺ¨λ₯Ό κ°μ‹ΈλŠ” ν˜•νƒœλ‘œ Heapμ˜μ—­μ— 생성
    λ”°λΌμ„œ μžμ‹ 클래슀 μƒμ„±μž μ•ˆμ—λŠ” λΆ€λͺ¨ μƒμ„±μžλ₯Ό ν˜ΈμΆœν•˜λŠ” super()κ°€ 첫 쀄에 쑴재
  • λ§€κ°œλ³€μˆ˜ μžˆλŠ” λΆ€λͺ¨ μƒμ„±μž ν˜ΈμΆœμ€ super(λ§€κ°œλ³€μˆ˜, λ§€κ°œλ³€μˆ˜);
package μ„ μ–ΈλΆ€
public class Son extends Mom {
	private name;
    
    public Son() {
    	/*Mom();*/
    }
    public Son(String address, String tel, String name){
    	super.setAddress(address);
        super.setTel(tel);
        this.name = name;
        
        super(address, tel);
        this.name = name;
    }
}

πŸ“Œfinal μ˜ˆμ•½μ–΄

- final 클래슀

  • 상속이 λΆˆκ°€λŠ₯ν•œ 클래슀
package μ„ μ–ΈλΆ€
public final class 클래슀λͺ… {}

- final λ©”μ†Œλ“œ

  • 상속 μ‹œ μ˜€λ²„λΌμ΄λ”©μ΄ λΆˆκ°€λŠ₯ν•œ λ©”μ†Œλ“œ
package μ„ μ–ΈλΆ€
Class μž‘μ„±λΆ€
	public final void λ©”μ†Œλ“œλͺ…() {}

πŸ“Œμ˜€λ²„λΌμ΄λ”©

  • λΆ€λͺ¨ν΄λž˜μŠ€μ— μžˆλŠ” λ©”μ†Œλ“œλ₯Ό μžμ‹ν΄λž˜μŠ€μ—μ„œ μž¬μ •μ˜ν•˜λŠ”κ²ƒ
  • μžμ‹ 객체λ₯Ό ν†΅ν•œ μ‹€ν–‰μ‹œ ν›„μ†μ˜ λ©”μ†Œλ“œκ°€ μš°μ„ κΆŒμ„ 가짐
  • λ©”μ†Œλ“œ ν—€λ“œλΌμΈ μœ„μ— Annotation인 @Override 기술
    μžμ‹ λ©”μ†Œλ“œ κΈ°μˆ μ‹œ μ˜€νƒ€κ°€ μžˆκ±°λ‚˜ λΆ€λͺ¨ λ©”μ†Œλ“œ 이름이 변경됐을 경우 였λ₯˜λ₯Ό λ°œμƒμ‹œμΌœμ€Œ

성립쑰건

  • λΆ€λͺ¨ ν΄λž˜μŠ€μ™€ μžμ‹ 클래슀의 λ©”μ†Œλ“œ 이름, λ§€κ°œλ³€μˆ˜μ˜ 개수, νƒ€μž…, 리턴 νƒ€μž…μ΄ 동일
  • μžμ‹ λ©”μ†Œλ“œμ˜ μ ‘κ·Ό λ²”μœ„κ°€ λΆ€λͺ¨ λ©”μ†Œλ“œμ˜ μ ‘κ·Ό λ²”μœ„λ³΄λ‹€ ν¬κ±°λ‚˜ 같은 경우
  • μžμ‹ λ©”μ†Œλ“œμ˜ μ˜ˆμ™Έ μˆ˜κ°€ λΆ€λͺ¨ λ©”μ†Œλ“œμ˜ μ˜ˆμ™Έ μˆ˜λ³΄λ‹€ μ κ±°λ‚˜ λ²”μœ„κ°€ 쒁은 경우
    단, private λ©”μ†Œλ“œλŠ” μ˜€λ²„λΌμ΄λ”© λΆˆκ°€

- μ˜€λ²„λΌμ΄λ”©κ³Ό μ˜€λ²„λ‘œλ”©

μ˜€λ²„λΌμ΄λ”©(Overriding)μ˜€λ²„λ‘œλ”©(Overloading)
ν•˜μœ„ ν΄λž˜μŠ€μ—μ„œ λ©”μ†Œλ“œ μ •μ˜κ°™μ€ ν΄λž˜μŠ€μ—μ„œ λ©”μ†Œλ“œ μ •μ˜
λ©”μ†Œλ“œ 이름 동일
λ§€κ°œλ³€μˆ˜ 개수, νƒ€μž… 동일
리턴 νƒ€μž… 동일
λ©”μ†Œλ“œ 이름 동일
λ§€κ°œλ³€μˆ˜ 개수, νƒ€μž… 닀름
리턴 νƒ€μž… 상관 μ—†μŒ
μžμ‹ λ©”μ†Œλ“œμ˜ μ ‘κ·Ό λ²”μœ„κ°€
λΆ€λͺ¨ λ©”μ†Œλ“œμ˜ μ ‘κ·Ό λ²”μœ„λ³΄λ‹€ ν¬κ±°λ‚˜ κ°™μ•„μ•Ό 함
μ ‘κ·Όμ œν•œμžμ™€ 상관 μ—†μŒ
μžμ‹ λ©”μ†Œλ“œμ˜ μ˜ˆμ™Έ μˆ˜κ°€
λΆ€λͺ¨ λ©”μ†Œλ“œμ˜ μ˜ˆμ™Έ μˆ˜λ³΄λ‹€ μ κ±°λ‚˜
λ²”μœ„κ°€ 쒁아야 함
μ˜ˆμ™Έμ²˜λ¦¬ 상관 μ—†μŒ

0개의 λŒ“κΈ€

Powered by GraphCDN, the GraphQL CDN