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()λ λΆλͺ¨ ν΄λμ€μ μμ±μλ₯Ό νΈμΆνλ λ° μ¬μ©λ©λλ€.
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 ν€μλλ₯Ό μ¬μ©ν μ μμ΅λλ€.