super & super( )

super & super( )

Javaμ—μ„œμ˜ super ν‚€μ›Œλ“œ

super ν‚€μ›Œλ“œλŠ” λΆ€λͺ¨ 클래슀(μƒμœ„ 클래슀)λ₯Ό μ°Έμ‘°ν•˜λŠ” 데 μ‚¬μš©λ©λ‹ˆλ‹€.
이 ν‚€μ›Œλ“œλŠ” 주둜 상속 κ΄€κ³„μ—μ„œ μ‚¬μš©λ˜λ©° 두 κ°€μ§€ μ£Όμš” ν˜•νƒœλ‘œ μ‚¬μš©λ©λ‹ˆλ‹€:

1. super ν‚€μ›Œλ“œ

super ν‚€μ›Œλ“œλŠ” λΆ€λͺ¨ 클래슀의 멀버(ν•„λ“œμ™€ λ©”μ„œλ“œ)에 μ ‘κ·Όν•  λ•Œ μ‚¬μš©λ©λ‹ˆλ‹€.
class Parent { String name = "λΆ€λͺ¨"; void display() { System.out.println("λΆ€λͺ¨ 클래슀의 display λ©”μ„œλ“œ"); } } class Child extends Parent { String name = "μžμ‹"; void display() { System.out.println("μžμ‹ 클래슀의 display λ©”μ„œλ“œ"); } void printNames() { System.out.println(name); // "μžμ‹" 좜λ ₯ System.out.println(super.name); // "λΆ€λͺ¨" 좜λ ₯ - λΆ€λͺ¨ 클래슀의 ν•„λ“œ μ ‘κ·Ό display(); // "μžμ‹ 클래슀의 display λ©”μ„œλ“œ" 좜λ ₯ super.display(); // "λΆ€λͺ¨ 클래슀의 display λ©”μ„œλ“œ" 좜λ ₯ - λΆ€λͺ¨ 클래슀의 λ©”μ„œλ“œ 호좜 } }
Java
볡사

2. super() λ©”μ„œλ“œ

super()λŠ” λΆ€λͺ¨ 클래슀의 μƒμ„±μžλ₯Ό ν˜ΈμΆœν•˜λŠ” 데 μ‚¬μš©λ©λ‹ˆλ‹€.
μžμ‹ 클래슀의 μƒμ„±μžμ—μ„œ 첫 번째 라인에 μœ„μΉ˜ν•΄μ•Ό ν•©λ‹ˆλ‹€.
λͺ…μ‹œμ μœΌλ‘œ ν˜ΈμΆœν•˜μ§€ μ•ŠμœΌλ©΄ μ»΄νŒŒμΌλŸ¬κ°€ μžλ™μœΌλ‘œ κΈ°λ³Έ μƒμ„±μžμΈ super()λ₯Ό μΆ”κ°€ν•©λ‹ˆλ‹€.
class Parent { Parent() { System.out.println("λΆ€λͺ¨ 클래슀의 κΈ°λ³Έ μƒμ„±μž"); } Parent(String message) { System.out.println("λΆ€λͺ¨ 클래슀의 λ§€κ°œλ³€μˆ˜ μƒμ„±μž: " + message); } } class Child extends Parent { Child() { // super(); // μ»΄νŒŒμΌλŸ¬κ°€ μžλ™μœΌλ‘œ μΆ”κ°€ (μƒλž΅ κ°€λŠ₯) System.out.println("μžμ‹ 클래슀의 κΈ°λ³Έ μƒμ„±μž"); } Child(String message) { super(message); // λΆ€λͺ¨ 클래슀의 λ§€κ°œλ³€μˆ˜ μƒμ„±μž 호좜 System.out.println("μžμ‹ 클래슀의 λ§€κ°œλ³€μˆ˜ μƒμ„±μž"); } }
Java
볡사

super ν‚€μ›Œλ“œμ˜ μ€‘μš”μ„±

β€’
λ©”μ„œλ“œ μ˜€λ²„λΌμ΄λ”© μ‹œ λΆ€λͺ¨ 클래슀의 λ©”μ„œλ“œλ₯Ό ν˜ΈμΆœν•  수 μžˆμŠ΅λ‹ˆλ‹€.
β€’
λ™μΌν•œ μ΄λ¦„μ˜ ν•„λ“œκ°€ μžˆμ„ λ•Œ λΆ€λͺ¨ 클래슀의 ν•„λ“œμ— μ ‘κ·Όν•  수 μžˆμŠ΅λ‹ˆλ‹€.
β€’
super()λ₯Ό 톡해 λΆ€λͺ¨ 클래슀의 μƒμ„±μžλ₯Ό λͺ…μ‹œμ μœΌλ‘œ ν˜ΈμΆœν•  수 μžˆμŠ΅λ‹ˆλ‹€.
β€’
λΆ€λͺ¨ 클래슀의 μ΄ˆκΈ°ν™” λ‘œμ§μ„ μž¬μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

μ£Όμ˜μ‚¬ν•­

β€’
super() μƒμ„±μž ν˜ΈμΆœμ€ μƒμ„±μžμ˜ 첫 번째 λ¬Έμž₯이어야 ν•©λ‹ˆλ‹€.
β€’
μƒμ„±μžμ—μ„œ this()와 super()λ₯Ό λ™μ‹œμ— μ‚¬μš©ν•  수 μ—†μŠ΅λ‹ˆλ‹€(λ‘˜ λ‹€ 첫 λ¬Έμž₯이어야 ν•˜κΈ° λ•Œλ¬Έ).
β€’
정적(static) λ©”μ„œλ“œμ—μ„œλŠ” super ν‚€μ›Œλ“œλ₯Ό μ‚¬μš©ν•  수 μ—†μŠ΅λ‹ˆλ‹€.