package ex01μμκΈ°μ΄;
public class Child extends Parent {
// μμν΄λμ€, μλΈν΄λμ€(μλ‘μ΄ ν΄λμ€)
// extends : μμμ λ°μ λ μ¬μ©νλ ν€μλ
// --> μ°μ₯νλ€, νμ₯νλ€μ μλ―Έλ₯Ό κ°μ§κ³ μμ
// class μλΈν΄λμ€ extends μνΌν΄λμ€
public void makeBong() {
System.out.println("λ§μλ λ΄κ³¨λ νμ€νλ₯Ό λ§λ λ€~ μ!");
}
public void makeSteak() {
System.out.println("λ²ν°μ μμ€νλΌκ±°μ€λ₯Ό μΆκ°ν΄μ μ€ν
μ΄ν¬λ₯Ό κ΅½λλ€");
}
/*
* @author SMHRD(λ§λ μ¬λ μ΄λ¦)
* @since 23.07.12
* @param 맀κ°λ³μμ λν μ€λͺ
λ¬μμ£Όλ κ³³
* @return λ°νκ°μ λν μ€λͺ
λ¬μμ£Όλ κ³³
*/
@Override // annotation --> κ°λ°μλ€λΌλ¦¬ μν΅ν λ μ¬μ©νλ μ£Όμ
public void makeAlio() {
// TODO Auto-generated method stub
super.makeAlio();
// super --> Parents ν΄λμ€ νΈμΆ
// . --> κ°μ§κ³ μλ
// makeAliio() --> λ©μλλ₯Ό κ·Έλλ‘ νΈμΆν κ±°μΌ
// λ°λ‘ λ°μ μλ κ±°μ λ¬λ¦Ό
}
// λ©μλ μ€λ²λ‘λ© == μ€λ³΅μ μ
// λ©μλ μ€λ²λΌμ΄λ© == μ¬μ μ
// : μμμ΄ μ μ λμμ λ, λΆλͺ¨ν΄λμ€κ° κ°μ§κ³ μλ λ©μλλ₯Ό κ·Έλλ‘ κ°μ§κ³ μμ
// (리ν΄νμ
, λ©μλλͺ
, 맀κ°λ³μ λ±) {} μμͺ½μ μλ λ‘μ§λ§ λ€μ μ μνλ κΈ°λ²
// public Child() {
// super(); // --> λΆλͺ¨ν΄λμ€μ μμ±μ νΈμΆ
// }
}
package ex01μμκΈ°μ΄;
import ex02λν
λκ²μκΈ°.GameChip;
public class Main {
// GameChip gc = new GameChip();
// μΆμλ©μλκ° μμΌλ©΄ JVMμ μμ± ν μ€νμ μ΄λ€ λ‘μ§μ μνν΄μΌ νλμ§ λͺ¨λ¦, κ·Έλμ μμ± λͺ»νκ² λ§μ
public static void main(String[] args) {
// μ€ννλ 곡κ°
Child c = new Child();
c.makeSteak();
c.makeAlio();
// μμν΄λμ€κ° λΆλͺ¨ν΄λμ€μ λ©μλλ₯Ό μ€λ²λΌμ΄λ©ν κ²½μ°
// μ€λ²λΌμ΄λ©ν λ©μλκ° νΈμΆλλ€.
// β
*(μλ°μμ) μμμ νΉμ§
// 1. λ€μ€μμμ μ§μνμ§ μλλ€.
// : νλμ ν΄λμ€λ νλμ λΆλͺ¨ ν΄λμ€λ§ κ°μ§ μ μλ€.
// 2. μμμ νμμ μ νμ λμ§ μλλ€.
// --> νλμ ν΄λμ€λ λΆλͺ¨ν΄λμ€κ° λ μλ μκ³ , μμν΄λμ€κ° λ μλ μλ€.
// --> λΆλͺ¨ν΄λμ€λ μ¬λ¬κ°μ μμν΄λμ€λ₯Ό κ°μ§ μ μλ€.
// 3. λͺ¨λ ν΄λμ€λ java.lang.Object(μ΅μμν΄λμ€)λ₯Ό μμλ°λλ€.
// κ°μ²΄μ νλ³ν(Casting)
// 1. κΈ°λ³Έμλ£νμ νλ³νμ λ°μ΄ν°μ ν¬κΈ°λ₯Ό κΈ°μ€μΌλ‘ μλ vs κ°μ νλ³ν κ²°μ
// ---> boolean, int, char, long, double, float, short, byte
// double num = 4; --> μλ νλ³ν
// why? double -> 8byte / int -> 4byte
// int num = (int) 3.14; --> κ°μ νλ³ν
// 2. λ νΌλ°μ€ νμ
μ μλ£ν
// : κ°μ²΄ λ΄ νλ, λ©μλμ μ κ·ΌκΆνμ κΈ°μ€μΌλ‘ κ°μ vs μλ νλ³ν κ²°μ
// μμμ΄ μ μ λμ΄μμ λ, κ°μ²΄μ νλ³ν κ°λ₯
// (1) μλνλ³ν(μ
μΊμ€ν
)
// : μμν΄λμ€κ° λΆλͺ¨ν΄λμ€ μλ£νμΌλ‘ μλμΌλ‘ νλ³ν νλ κ²μ μ
μΊμ€ν
μ΄λΌκ³ λΆλ₯Έλ€.
// ex) λλ¬Ό --> κ³ μμ΄ ν΄λμ€κ° μμ
// --> κ³ μμ΄λ λλ¬Όμ΄λ€! (λ§μ΄ λ¨.)
Parent p = new Child() ;
p.makeSteak();
// --> μ
μΊμ€ν
λμμ λ, μμν΄λμ€(μλΈν΄λμ€, νμν΄λμ€)κ° λΆλͺ¨ν΄λμ€(μνΌ, μμ)μ
// λ©μλλ₯Ό μ€λ²λΌμ΄λ© ν κ²½μ°μλ, μμν΄λμ€μ λ©μλκ° νΈμΆλλ€.
// new child()λ μλ£νμ΄ childλ λ μ μκ³ parentλ,
// objectλ λ μ μλ€. (λ€νμ±)
// (2) κ°μ νλ³ν(λ€μ΄μΊμ€ν
)
// : λΆλͺ¨ν΄λμ€κ° μμν΄λμ€ κ°μ νλ³ν
// >> β
λ€μ΄μΊμ€ν
μ μ μ μ μ >> μ
μΊμ€ν
λ κ°μ²΄λ₯Ό λ€μ λ³Έλ μμ μ ννλ‘ κ°μ μ μΌλ‘ λλ리λ κ²
// Child ch = (Child) new Parent();
// μ½λλ₯Ό μμ±νλ€κ° λΉ¨κ°μ€μ΄ λ μ --> (ꡬ문 μ€λ₯)
// μ½λμλ λ¬Έμ κ° μλλ°, μ€ννμ λ λ¬Έμ μν© λ°μ --> Exception(μμΈμν©)
// ꡬ문μλ λ¬Έμ κ° μμ§λ§, JVMμ΄ μ½λλ₯Ό ν΄μνλ μκ° μμΈκ° λ°μ
Child ch = (Child)p;
ch.makeBong();
// λ€νμ± : pλΌλμ parent μλλ° childλ‘ λ°λμμλ€
}
}
package ex01μμκΈ°μ΄;
public class Parent {
// λΆλͺ¨ν΄λμ€, μνΌν΄λμ€(κΈ°μ‘΄ ν΄λμ€)
// μ€ν
μ΄ν¬ λ§λ λ€.
public void makeSteak() {
System.out.println("λ§μλ μ€ν
μ΄ν¬λ₯Ό κ΅½λλ€. μ·¨μ΅μ·¨μ΅~");
}
// μ리μ€μ¬λ¦¬μ€ λ§λ λ€.
public void makeAlio() {
System.out.println("μ리μ€μ¬λ¦¬μ€ νμ€ν λ§λ€κΈ°!!!!");
}
}
public static void main(String[] args) {
// κΈ°μ‘΄ν΄λμ€μ λ³μ (λ°μ΄ν°)μ λ©μλ(λ‘μ§,μ½λ)λ₯Ό λ¬Όλ €λ°μ μλ‘μ΄ ν΄λμ€λ₯Ό ꡬμ±νλ κ².
// κΈ°μ‘΄ ν΄λμ€ = λΆλͺ¨ ν΄λμ = μνΌ ν΄λμ€
// μμν΄λμ€ = μλΈν΄λμ€
// μ¬μ¬μ© + μΆκ°μ¬μ© κ°λ₯
// κΈ°μ‘΄ ν΄λμ€μ λ³μμ μ½λλ₯Ό μ¬μ¬μ©
// λ¨Όμ μμ±λ κ²μ¦λ νλ‘κ·Έλ¨μ μ¬μ¬μ©
// ν΄λμ€κ° κ³μΈ΅μ λΆλ₯ λ° κ΄λ¦¬
// μ μ§λ³΄μ μ©μ΄
// * μμμ νΉμ§
// - λ€μ€ μμμ΄ μ§μλμ§ μλλ€.
// - μμμ νμμ μ νμ λμ§λ μλλ€.
// - λͺ¨λ ν΄λμ€λ Object(μ΅μμν΄λμ€) μμλ°λλ€.
// λ©μλ μ€λ²λΌμ΄λ©
// : μμμ΄ μ μ λμ΄ μλ μνμμ, μμν΄λμ€(νμ,μλΈν΄λμ€)κ° λΆλͺ¨ν΄λμ€(μνΌ,μμ)κ° κ°μ§κ³ μλ λ©μλλ₯Ό κ·Έλλ‘
// κ°μ§κ³ μμ μ€κ΄νΈ{} μμͺ½μ μλ λ‘μ§λ§ μ¬μ μνλ λ©μλ μ μΈκΈ°λ²
// μ€λ²λ‘λ© μ€λ³΅μ μ / μ€λ²λΌμ΄λ© μ¬μ μ
// κ°μ²΄ νλ³ν --> μμμ΄ μ μ
// 1) μ
μΊμ€ν
// : μμν΄λμ€κ° λΆλͺ¨ν΄λμ€λ‘ μλ νλ³ν(νλμ λ©μλ μ κ·ΌκΆνμ΄ κΈ°μ€)
// 2) λ€μ΄μΊμ€ν
// : μ
μΊμ€ν
λ κ°μ²΄λ₯Ό λ€μ λ³Έλμ μλ£νμΌλ‘ κ°μ λ‘ λλ리λ κ²
// * νλ³ν --> κ·Έλ¦Ό 그리면μ κ³΅λΆ *
}