[JAVA] μμ(Inheritance)μ΄λ?
in Tech-Stack on JAVA
Contents
- μμμ΄λ?
- μμμ μμ
- superμ super()λ?
- instanceof λ©μλ
μμ Inheritance μ΄λ?
μ΄μ μ λ§λ€μ΄ λμ μ€κ³λμ κΈ°λ₯μ μΆκ°νλ κ²μ λ§νλ€. μ½λμ μ¬μ¬μ©μ± λ° μ λ’°μ±μ΄ μ¦κ°νλ νΉμ§μ΄ μλ€.
extends ν€μλλ₯Ό ν΅ν΄ ν΄λμ€ μμμ λ°λλ€.
javaμμλ λ€μ€ μμμ μ§μνμ§ μλλ€. (λ€μ€ μμ = μ¬λ¬ ν΄λμ€λ₯Ό μμλ°λ νμ)
A β A1 β A2 β A3 β A4 μ΄λ° μμλ‘ μμμ λ°λ κ²½μ°μ(A1 extends A) A4μ λΆλͺ¨ ν΄λμ€λ A, A1, A2, A3 ν΄λμ€ μ λΆμ΄λ€.
// λΆκ°λ₯!!!
public class A extends A1, A2 {}
μμ μμ
1. λΆλͺ¨ ν΄λμ€
public class Parents {
int a = 100;
void methodP() {
System.out.println("parent method");
}
}
2. λΆλͺ¨ ν΄λμ€λ₯Ό μμλ°λ μμ ν΄λμ€
public class Child extends Parents {
int a = 1;
// μ΄λ
Έν
μ΄μ
@Override
void methodP() {
System.out.println("child method");
}
}
- μμ ν΄λμ€μμλ μμ λ§μ λ©μλλ₯Ό μμ±ν μ μκ³ λΆλͺ¨ ν΄λμ€μ λ©μλλ₯Ό μ€λ²λΌμ΄λ(Override)ν μ μλ€.
- μ€λ²λΌμ΄λ©ν κ²½μ° μ΄λ
Έν
μ΄μ
μ λ¬μμ£Όμ.(ex.
@Override)- λΆλͺ¨/μ‘°μ ν΄λμ€λ‘λΆν° μμλ°μ λ©μλμ λ΄μ©μ μμ ν΄λμ€μ λ§κ² μμ νλ κ²μ μ€λ²λΌμ΄λ©μ΄λΌκ³ νλ€.
- Annotation : JVMμκ² μλ €μ£Όλ μ£Όμ μν . μ»΄νμΌν λ νμΈνλ μ©λ
3. μμ ν΄λμ€ κ°μ²΄ μμ± & μ€ν
public static void main(String[] args) {
Child ch = new Child();
ch.methodP();
}
// μ€ν κ²°κ³Ό ===========
// child method
superμ super()
super
μμ ν΄λμ€κ° λΆλͺ¨ ν΄λμ€λ‘λΆν° μμλ°μ λ©€λ²λ₯Ό μ°Έμ‘°ν λ μ¬μ©νλ μ°Έμ‘° λ³μμ΄λ€.
λΆλͺ¨ ν΄λμ€μ λ©€λ²λ₯Ό μ°Έμ‘°ν λλ superλ₯Ό μμ μ λ©€λ²λ₯Ό μ°Έμ‘°ν λλ thisλ₯Ό μ¬μ©νμ¬ κ΅¬λΆνλ€.
public class Child extends Parents {
int a = 1;
void methodC() {
System.out.println(super.a);
System.out.println(this.a);
}
}
public static void main(String[] args) {
Child ch = new Child();
ch.methodC();
}
// μ€ν κ²°κ³Ό ===========
// 100
// 1
super()
λΆλͺ¨ ν΄λμ€μ μμ±μλ₯Ό νΈμΆνλ λ©μλμ΄λ€.
λ§€κ°λ³μλ₯Ό μ§μ νμ§ μμΌλ©΄ λν΄νΈ μμ±μκ° νΈμΆλλ©° λ§€κ°λ³μλ₯Ό μ§μ νλ©΄ ν΄λΉ λ³μλ₯Ό μΈμλ‘ λ°λ μμ±μλ₯Ό νΈμΆνλ€.
λ°λμ 첫 λ²μ§Έ λ¬Έμ₯μ μ¬μ©λμ΄μΌ νλ€.
class Parent {
int p;
Parent(int n) {
p = n;
}
Parent() {
p = 100;
}
}
class Child extends Parent {
Child() {
super(9999);
}
}
μμ ν΄λμ€μ λν΄νΈ μμ±μμλ super()κ° λν΄νΈλ‘ μλ΅λμ΄ μμΌλ©° λΆλͺ¨μ λν΄νΈ μμ±μκ° μλ λ€λ₯Έ μμ±μλ₯Ό νΈμΆν λλ§ μ¬μ©νλ©΄ λλ€.
μμμμ μμ£Ό μ¬μ©λλ ν€μλ
instanceof μ°μ°μ
κ°μ²΄ νμ μ νμΈνλ μ°μ°μμ΄λ€.
μ£Όλ‘ μμ κ΄κ³μμ λΆλͺ¨ κ°μ²΄μΈμ§ μμ κ°μ²΄μΈμ§ νμΈνλλ° μ¬μ©λλ€.
κ°μ²΄ instanceof ν΄λμ€ ννλ‘ μ¬μ©λλ©° νλ³ν κ°λ₯μ¬λΆλ₯Ό νμΈνμ¬ true / false λ‘ κ²°κ³Όλ₯Ό λ°ννλ€.
class Child extends Parent{}
Parent p = new Parent();
Child ch = new Child();
// instanceof λ©μλ νμ© =======
p instanceof Parent; // true
ch instanceof Parent; // true
p instanceof Child; // false
ch instanceof Child; // true
