#1 Language πŸ‘„/1-4 JAVA

[JAVA] extends vs implements

FillByCoding 2022. 12. 3. 20:19

https://fillbycoding.tistory.com/62

 

[JAVA] 상속 (Inheritance)

μƒμ†μ΄λž€?? ~은 ~이닀 상속은 ν΄λž˜μŠ€κ°„μ˜ λΆ€λͺ¨, μžμ‹κ°„μ˜ 관계 정리(javaλŠ” 단일 μƒμ†λ§Œ ν—ˆμš© ex) extends Tv, DVD{ }// error) μžμ‹ν΄λž˜μŠ€μ—μ„œ λΆ€λͺ¨ν΄λž˜μŠ€λ₯Ό 상속 λ°›μ•„ λΆ€λͺ¨ν΄λž˜μŠ€μ— μžˆλŠ” ν•„λ“œ, λ©”μ†Œλ“œλ₯Ό

fillbycoding.tistory.com

 

 

extends와 implements의 차이

 

  • extends와 implementsλŠ” μžλ°” μƒμ†μ˜ ν˜•νƒœ, 근데 뭐가 λ‹€λ₯Έκ±ΈκΉŒ?
μš°μ„ , Class와 Interface 차이λ₯Ό 보자

μžμ‹ ν΄λž˜μŠ€κ°€ λΆ€λͺ¨ 클래슀λ₯Ό 상속을 받을 수 μžˆλ‹€λ©΄, λ‹€μ–‘ν•œ λ™μž‘μ„ μˆ˜ν–‰ν•  수 μžˆλ‹€λŠ” μž₯점을 κ°€μ§€κ²Œ λœλ‹€.
ν•˜μ§€λ§Œ 클래슀λ₯Ό μ΄μš©ν•˜μ—¬ 닀쀑 상속을 ν•  경우 λ©”μ†Œλ“œ 좜처의 λͺ¨ν˜Έμ„± λ“±μ˜ 문제둜 μžλ°”λŠ” 클래슀λ₯Ό ν†΅ν•œ 닀쀑 상속은 μ§€μ›ν•˜μ§€ μ•ŠλŠ”λ‹€.
ν•˜μ§€λ§Œ 닀쀑 μƒμ†μ˜ 이점을 버릴 μˆ˜λŠ” 없기에 μžλ°”μ—μ„œλŠ” μΈν„°νŽ˜μ΄μŠ€λ₯Ό ν™œμš©ν•˜μ—¬ 닀쀑 상속을 λŒ€μ‹ ν•΄ κ΅¬ν˜„ν•œλ‹€.
μΈν„°νŽ˜μ΄μŠ€λŠ” λ‹€λ₯Έ 클래슀λ₯Ό μž‘μ„±ν•  λ•Œ 기본이 λ˜λŠ” 틀을 μ œκ³΅ν•˜λ©΄μ„œ 클래슀 μ‚¬μ΄μ˜ 쀑간 맀개 μ—­ν• κΉŒμ§€ λ‹΄λ‹Ή
μΆ”μƒν΄λž˜μŠ€κ°€ λ―Έμ™„μ„± 섀계도라면 μΈν„°νŽ˜μ΄μŠ€λŠ” κΈ°λ³Έ 섀계도

 

extends
  • 클래슀λ₯Ό ν™•μž₯ν•˜λŠ” κ°œλ… | class 상속 class
  • λΆ€λͺ¨μ˜ λ©”μ†Œλ“œλ₯Ό κ·ΈλŒ€λ‘œ μ‚¬μš©ν•  수 있으며 μ˜€λ²„λΌμ΄λ”© ν•  ν•„μš” 없이 λΆ€λͺ¨μ— κ΅¬ν˜„λ˜μžˆλŠ” 것을 직접 μ‚¬μš© κ°€λŠ₯
  • 일반 ν΄λž˜μŠ€μ™€ abstract(좔상) 클래슀 상속에 μ‚¬μš© 됨
  • 클래슀 ν•œ 개만 상속 κ°€λŠ₯
  • ν΄λž˜μŠ€μ—μ„œ 아무것도 extends ν•˜μ§€ μ•ŠμœΌλ©΄ 기본적으둜 extends Objectκ°€ μƒλž΅λ˜μ–΄ 있음
    • κ·Έλ ‡κΈ° λ•Œλ¬Έμ— toString λ“±κ³Ό 같은 λ©”μ†Œλ“œ μ‚¬μš© κ°€λŠ₯
    • λͺ¨λ“  ν΄λž˜μŠ€κ°€ 기본적으둜 객체 클래슀 (Object Class)의 μ—°μž₯μ„ 
    • λ‹€μ‹œλ§ν•΄, λͺ¨λ“  ν΄λž˜μŠ€λŠ” 객체 클래슀의 ν•˜μœ„ 클래슀

 

implements
  • interfaceλ₯Ό κ΅¬ν˜„ν•˜λŠ” 것 | class 상속 interface
  • λΆ€λͺ¨μ˜ λ©”μ†Œλ“œλ₯Ό λ°˜λ“œμ‹œ μ˜€λ²„λΌμ΄λ”©(μž¬μ •μ˜)ν•΄μ•Ό 함
  • μžλ°”λŠ” 닀쀑 상속을 μ§€μ›ν•˜μ§€ μ•ŠλŠ”λ°, implementsλŠ” 닀쀑 상속을 λŒ€μ‹ ν•΄μ€Œ
  • interface 상속에 μ‚¬μš© 됨
  • interface μ—¬λŸ¬κ°œ 상속 κ°€λŠ₯
LIST