μμ(Inherit,extends,νμ₯)
- λΆλͺ¨λ‘λΆν° μμμκ² μμ
- λΆλͺ¨ν΄λμ€ (super class)μ λ©€λ²λ€μ μμν΄λμ€ (child class)μμ
μκΈ°κ° μ μΈν κ²μ²λΌ μ¬μ©νλ € νλ κ²
- μ¬μ¬μ©μ±
- ν΄λμ€κ°μ 곡ν΅μμ (λ©€λ²)κ° μλ€λ©΄ 곡ν΅μμλ₯Ό
λΆλͺ¨ν΄λμ€λ‘ μμ± ν μμν΄λμ€κ° μμ(νμ₯) ν΄μ μ¬μ©
- javaλ λ¨μΌ μμλ§ νμ©
μμμ νλ©΄μ μ»λ κ²
1. 곡ν΅μμλ₯Ό μ¬νμ©(μΆμν)
2. classκ°μ κ΄κ³λ₯Ό μ€μ
3. μμ±μλ μ μΈ
μμ μ¬μ©λ²
public class μμν΄λμ€λͺ extends λΆλͺ¨ν΄λμ€λͺ { }
public class SuperCalss { }
public class ChildClass extends SuperCalss { }
μμ§μ μΌλ‘λ κ΄κ³κ° μμ§λ§
μν μμλΌλ¦¬λ κ΄κ³κ° μμ
μ°Έμ‘°λ³μ super,super()
μμ보λ€λ νμ₯μ κ°λ μΌλ‘ μ΄ν΄λ₯Ό ν΄μΌν¨
μμν΄λμ€μ κ°μ²΄λ₯Ό μμ±ν λ λΆλͺ¨κ°μ²΄λ₯Ό μμ±νκ³ λΆλͺ¨κ°μ²΄λ₯Ό νμ₯ν΄μ μμ μ κ°μ²΄λ₯Ό μμ±
1. super()
- μμμ μμ±μ λ΄μμ μ¬μ©
- λΆλͺ¨μ μμ±μλ₯Ό νΈμΆ, μλ΅ κ°λ₯
- μμ±μμ 첫μ€μ μμΉ, this() super() λ₯Ό κ°μ΄ μΈ μ μμ
(λλ€ μ²«μ€μ μμΉν΄μΌ νλλ° κ°μ΄ μ°λ©΄ νλλ 무쑰건 μλ μμ ν λκΉ κ°μ΄ μΈ μ μμ)
2. μ°Έμ‘°λ³μ super
- λΆλͺ¨κ°μ²΄μ μ£Όμλ₯Ό λ΄κ³ μλ μ°Έμ‘°λ³μ
- λΆλͺ¨μ λ©€λ²λ³μ, λ©€λ²λ©μλ μ¬μ©
μΆμν΄λμ€μ μΆμλ©μλ
1. μΆμν΄λμ€
- μμ±λμ§ μμ ν΄λμ€
- κ°μ²΄ μμ± X
- μμ(νμ₯)ν΄μ μμ±μμΌμ μ¬μ©ν΄λΌ
- λ°μ΄ν°νμ μΌλ‘ μ μΈμ κ°λ₯
- μΌλ°(ꡬν) ν΄λμ€μ²λΌ λ©€λ²λ³μ, λ©€λ²λ©μλ , μμ±μ, μΆμλ©μλλ₯Ό κ°μ§ μ μμ
- ν΄λμ€ λ΄μ νκ° μ΄μμ μΆμ λ©μλκ° μμΌλ©΄ ν΄λΉ ν΄λμ€λ μΆμν΄λμ€ μ μΈ
μ¬μ©λ²
μ κ·Όμ§μ μ abstract ν΄λμ€λͺ { }
2. μΆμλ©μλ
- μμ±λμ§ μμ λ©μλ
- λ©μλμ μ μΈλΆ (header)λ§ μλ λ©μλλ₯Ό μΆμλ©μλλΌκ³ ν¨
μ¬μ©λ²
μ κ·Όμ§μ μ abstract λ©μλλͺ ( );
μ κ·Όμ§μ μ λ©μλλͺ ()->λ©μλμ ν€λ // { }-> λ©μλμ λ°λ
μ€λ²λΌμ΄λ©(OverRiding)
μ€λ²λ‘λ©κ³Ό ν·κ°λ¦¬μ§ λ§κΈ°!(μ€λ²λΌμ΄λ©κ³Ό μ€λ²λ‘λ©μ μ°¨μ΄μ μμλκΈ°)
- μμλ°μ λΆλͺ¨μ λ©μλλ₯Ό μκΈ° μμ μ λ§κ² λ΄μ©μ μ¬μ μ νλ κ²
- λ©μλμ μ μΈλΆλ λμΌνκ² μ μΈ(μμ x)
- λ¨, μ κ·Όμ§μ μλ λ²μκ° κ°κ±°λ λ λκ² μμ κ°λ₯
(λ μ’κ²λ λΆκ°λ₯ public->private x)
μΈν°νμ΄μ€(interface)
- μΆμν΄λμ€μ λΉμ·
- μΆμν΄λμ€λ³΄λ€ λ μΆμνκ° μ¬νκ²
- μΌμ’ μ μΆμ ν΄λμ€
- μμ(λ³νμ§ μλμ)μ μΆμλ©μλλ₯Ό λ©€λ²λ‘ κ°μ§
- κ°μ²΄ μμ± X
- ꡬν(implements) ν΄μ μ€λ²λΌμ΄λ©(μ¬μ μ) νλΌλ μ리
- λ©μλ μ΄λ¦μ νμ€ν
- κ΄κ³κ° μλ ν΄λμ€κ°μ κ΄κ³λ₯Ό λ§Ίμ΄ μ€ λ μ¬μ©
- μΈν°νμ΄μ€λ λ€λ₯Έ μΈν°νμ΄μ€λ₯Ό μμ κ°λ₯(μΈν°νμ΄μ€λΌλ¦¬)
- μΈν°νμ΄μ€ ꡬνμ λ€μ€κ΅¬νμ΄ κ°λ₯
μ¬μ©λ²
1. μΈν°νμ΄μ€ μ μΈ
public interface μΈν°νμ΄μ€λͺ extends μμλ°μ μΈν°νμ΄μ€λͺ {
-μΈν°νμ΄μ€λͺ μ ν΄λμ€μ κ°μ΄ 첫κΈμλ λλ¬Έμλ‘ μ μ΄μ£ΌμΈμ.
//μμ
//μΆμλ©μλ
//μ κ·Όμ§μ μλ 무쑰건 public abstract
public abstract 리ν΄νμ λ©μλλͺ ([λ§€κ°λ³μ μ μΈ]);
//publicμ΄λ abstractμ μλ΅ κ°λ₯
public abstract void t1(); -> μ μ
int t2 (String name); -> μ΄κ±° μΈν°νμ΄μ€ μ μΈ public abstractμλ΅νκ²
public void t3(); //public abstract void t3(); μ κ°μ
abstract void t4 () ; // public abstract void t4(); μ κ°μ
}
2. ꡬνν΄λμ€μμ μΈν°νμ΄μ€ ꡬν
public class ν΄λμ€λͺ implements μΈν°νμ΄μ€λͺ 1, μΈν°νμ΄μ€λͺ 2, ...{
}
μΈν°νμ΄μ€ μ¬λ¬κ° λμ ꡬν κ°λ₯
λ€λ₯Έ ν΄λμ€μ λ©€λ²λ₯Ό λ΄κ° μ μΈν λ©€λ²μ²λΌ μ¬μ©νκ³ μΆμλ
λ°©λ²
1. μμ
μμν΄λμ€λͺ is a λΆλͺ¨ν΄λμ€λͺ
2. λ©€λ²λ³μ μ μΈ
μμν΄λμ€λͺ has a λΆλͺ¨ν΄λμ€λͺ
λ€νμ±(Polymoph)
- ννκ° λ€μνλ€
- λ°μ΄ν°νμ μ΄ λ€μνλ€
- νλ³νκ³Ό λΉμ·ν κ°λ
1. 쑰건
1) μμκ΄κ³μμλ§ κ°λ₯
2) λΆλͺ¨μ μμ κ°μ νλ³ν
Magition is a Character
(μμν΄λμ€ Magition /λΆλͺ¨ν΄λμ€ Character)
λ§λ²μ¬λ μΊλ¦ν°μ΄λ€.
λ§λ²μ¬ λ°μ΄ν° νμ μ μΊλ¦ν° λ°μ΄ν° νμ μ΄λ€
-> λ§λ²μ¬νμ μ μΊλ¦ν°νμ μ΄λ€.
public class Super( ){ }
public class Child extends Super( ){ }
public class Child2 extends Super( ){ }
Super super = new Child();
Super super = new Child2();
Child child = super;(X)
Child child = (Child)super;
2. Interface λ λ€νμ±μ ν¬ν¨ (λΆλͺ¨)
public class Child implements Super{ }
Super super = new Child( );
***λ§μΉ μ΄λ° λλ
double avg = 3.12;
int num (int)avg; νλ³ν (Cascading)
1. μλνλ³ν μ -> ν°
2. κ°μ νλ³ν ν° -> μ
primitive νμ λΌλ¦¬λ§ νλ³ν (booleanνμ μ μ μΈνκ³ )
Reference νμ λΌλ¦¬ νλ³ν
/*
κΈ°λ‘μ© λΈλ‘κ·Έ μ λλ€.
νλ¦° λΆλΆμ΄ μμΌλ©΄ λκΈλ‘ λ¨κ²¨μ£ΌμΈμ.
κ°μ¬ν©λλ€ : )
*/