- μμ νκ² κ΅¬νλμ΄ μμ§ μμ λ©μλλ₯Ό κ°μ§κ³ μλ ν΄λμ€λ₯Ό μλ―Ένλ€.
- λ©μλκ° λ―Έμμ± λμ΄ μμΌλ―λ‘ μΆμ ν΄λμ€λ‘λ κ°μ²΄λ₯Ό μμ± λͺ»ν¨
- μΆμν΄λμ€λ μ£Όλ‘ μμκ³μΈ΅μμ μΆμμ μΈ κ°λ μ λνλ΄κΈ° μν μ©λλ‘ μ¬μ©
- μΆμν΄λμ€λ₯Ό λ§λ€κΈ° μν΄ ν΄λμ€ μ μΈμ μμ abstract λ₯Ό λΆμΈλ€.
import java.awt.*; abstract class Shape { //μΆμν΄λμ€ Shapeλ₯Ό μ μΈ, μΆμ γ λ₯΄λμ€λ‘λ κ°μ²΄λ₯Ό μμ± λͺ»ν¨ int x, y; public void move(int x, int y) { //μΆμν΄λμ€λΌκ³ νλλΌλ μΆμ λ©μλκ° μλ 보ν΅μ λ©μλλ κ°μ§μ μμ this.x = x; this.y = y; } public abstract void draw(); //μΆμλ©μλ μ μΈ, μΆμ λ©μλλ₯Ό νλλΌλ κ°μ§λ©΄ μΆμ ν΄λμ€κ° λλ€. μΆμ λ©μλλ₯Ό κ°μ§κ³ μλλ°λ //abstract λ₯Ό class μμ λΆμ΄μ§ μμΌλ©΄ μ»΄νμΌ μ€λ₯κ° λ°μ }; public class P269 extends Shape { int width, height; public void draw() { //μΆμ λ©μλ ꡬν System.out.println("μ¬κ°ν 그리기 λ©μλ"); //μλΈ ν΄λμ€ P269μμ μνΌ ν΄λμ€ μΆμ λ©μλ draw()κ° μ€μ λ©μλλ₯Ό ꡬν //μλΈν΄λμ€μμ μΆμ λ©μλλ₯Ό ꡬννμ§ μμΌλ©΄ μ»΄νμΌ μ€λ₯ λ°μ } }; class circle extends Shape { int radius; public void draw() { System.out.println("μ 그리기 λ©μλ"); //μΆμλ©μλ draw()κ° μ€μ λ©μλλ‘ κ΅¬ννλ€. } }
μΆμλ©μλλ€μ μ§ν©μ²΄! μΆμλ©μλλ‘λ§ μ΄λ£¨μ΄μ§!
- μλ°μμμ μΈν°νμ΄μ€λ κ°μ²΄μ κ°μ²΄ μ¬μ΄μ μνΈ μμ©μ΄ μ΄λ£¨μ΄μ§λ μΈν°νμ΄μ€λ₯Ό μλ―Έ
- μΈν°νμ΄μ€μ μΌλ°μ μΈ ννλ λ€μκ³Ό κ°λ€
public interface μΈν°νμ΄μ€ _μ΄λ¦{ λ°νν μΆμλ©μλ1(...); λ°νν μΆμλ©μλ2(...); ... }
- μΆμν΄λμ€μ²λΌ μΈν°νμ΄μ€λ μΈμ€ν΄μ€λ₯Ό μμ± ν μ μμ, λ€λ§ λ€λ₯Έ ν΄λμ€μ μνμ¬ κ΅¬ν(implement)λ¨
public class ν΄λμ€_μ΄λ¦ implement μΈν°νμ΄μ€_μ΄λ¦{ λ°νν μΆμ λ©μλ1(...){ .... } λ°νν μΆμ λ©μλ2(...){ .... } }
- μΈν°νμ΄μ€ μμμ μ μΈλλ λ©μλλ€μ λͺ¨λ 묡μμ μΌλ‘ public, abstractμ΄λ€.
μ£Όμβ
μΈν°νμ΄μ€λ ν΄λμ€κ° μλλ―λ‘ new μ°μ°μλ₯Ό μ¬μ©ν μ μλ€.
//RemoteControlμ΄ interfaceλΌκ³ κ°μ νμ μ RemoteControl obj = new RemoteControl(); //μ¬μ©ν μ μλ€.
- μΈν°νμ΄μ€λ νλμ νμ (type)μΌλ‘ 보μμΌνλ€. μ΄ νμ μ μΈν°νμ΄μ€λ₯Ό ꡬνν ν΄λμ€λ€μ νλλ‘ λ¬Άλ μν μ νλ€.
- μΈν°νμ΄μ€μ μ΄λ¦μ ν΄λμ€μ μ΄λ¦κ³Ό λ§μ°¬κ°μ§λ‘ μ°Έμ‘° λ³μλ₯Ό μ μνλλ° μ¬μ©λ μ μλ€.
- λ§μ½ μΈν°νμ΄μ€ νμ μ μ°Έμ‘° λ³μλ₯Ό μ μ νμλ€λ©΄, μ΄ λ³μμ λμ ν μ μλ κ°μ λ°λμ κ·Έ μΈν°νμ΄μ€λ₯Ό ꡬνν ν΄λμ€μ κ°μ²΄μ΄μ΄μΌ νλ€.
- μ¬λ¬κ°μ μΈν°νμ΄μ€λ₯Ό λμꡬνν μ μμ
public class Television implements RemoteControl,SerialCommunication //2κ°μ μΈν°νμ΄μ€ λμꡬννλ€λ μλ―Έ { ... }
- μΈν°νμ΄μ€ μμνκΈ°
- κΈ°μ‘΄μ μ¬μ©νλ μΈν°νμ΄μ€λ₯Ό λ³κ²½μν€λ©΄ μ΄ μΈν°νμ΄μ€λ₯Ό ꡬννμλ λͺ¨λ ν΄λμ€κ° λμνμ§ μκ² λκΈ° λλ¬Έμ, μ΄λ°κ²½μ°λ₯Ό λλΉνμ¬ μΈν°νμ΄μ€λ μμμ λ°μμ μμ μν¬μ μλ€.
public interface AdvanceRemoteControl extends RemoteControl{ //μΈν°νμ΄μ€λ λ€λ₯Έ μΈν°νμ΄μ€λ₯Ό μμ λ°μ μ μμ { ... }
μΈν°νμ΄μ€μ λ€μ€ μμ
- ν΄λμ€μκ² λ€μ€μΈν°νμ΄μ€λ₯Ό κ°μ§κ² νλ λ₯λ ₯μ΄λ€.
μΈν°νμ΄μ€μ μΆμ ν΄λμ€
- μΆμν΄λμ€λ μΆμ λ©μλ λλ¬Έμ λΆλΆμ μΌλ‘ λ―Έμμ±λ ν΄λμ€
- μΈν°νμ΄μ€λ μμ ν λ―Έμμ±λ μ±λ‘ λ¨κ²¨μ§ μΆμ ν΄λμ€
μμμ μ
- μΈν°νμ΄μ€μ λ λ€λ₯Έ μ©λλ μ¬λ¬ ν΄λμ€μμ μ¬μ©λλ μμλ€μ μ μνλ κ²
interface Days{ public static final int SUNDAY =1, MONDAY=2, TUESDAY=3, WEDNESDAY=4, THURSDAY=5, FRIDAY=6;SATURDAY=7; //μμλ λκ² μ μ λ³μλ‘ μ μΈ }
- κ°μ²΄λ€μ νμ μ΄ λ€λ₯΄λ©΄ λκ°μ λ©μμ§κ° μ λ¬λλλΌλ μλ‘ λ€λ₯Έ λμμ νλ κ²
- λκ°μ λͺ λ Ήμ λ΄λ¦¬μ§λ§ κ°μ²΄μ νμ μ΄ λ€λ₯΄λ©΄ μλ‘ λ€λ₯Έ κ²°κ³Όλ₯Ό μ»λ κ²μ΄ λ€νμ±
μν₯νλ³ν
- μλΈν΄λμ€μ κ°μ²΄λ μνΌ ν΄λμ€μ κ°μ²΄μ²λΌ μ·¨κΈ κ°λ₯
- μλ°μμλ μνΌ ν΄λμ€ κ°μ²΄κ° μλκ³³μ μλΈ ν΄λμ€ κ°μ²΄λ‘ λμΉνλ κ²μ΄ κ°λ₯
- μ΄κ²μ μν₯ νλ³νμ΄λΌκ³ νλ€.
νν₯νλ³ν
- μν₯ νλ³νμ λ°λ
- λ§μ½ μλΈ ν΄λμ€ κ°μ²΄μΈλ° νλ³νμ μνμ¬ μΌμμ μΌλ‘ μνΌ ν΄λμ€ μ°Έμ‘° λ³μμ μνμ¬ μ°Έμ‘°λκ³ μλ κ²½μ°μλ νν₯ νλ³νμ ν΅ν΄ μλ μνλ‘ λλ릴 μ μλ€. μ΄λ λ°λμ λͺ μμ μΌλ‘ νλ³ν μ°μ°μλ₯Ό μ μ΄μ£Όμ΄μΌ νλ€.
κ°μ²΄μ νμ μ μμλ΄λ λ°©λ²
- μ°Έμ‘°λ³μκ° νμ¬ μ€μ λ‘ μ΄λ€ κ°μ²΄λ₯Ό μ°Έμ‘°νκ³ μλμ§λ₯Ό μμμΌ νλ κ²½μ°
itanceof μ°μ°μ μ¬μ©
π(A instanceof B)λ Aκ° νμ B μ΄λ©΄ trueλ₯Ό λ°ν
λ€νμ±μ μ΄μ©
- λ©μλμ 맀κ°λ³μλ₯Ό μ μΈν λ, λ€νμ±μ λ§μ΄ μ΄μ©
π μΌλ°μ μΌλ‘ λ©μλ 맀κ°λ³μλ μλΈ ν΄λμ€λ³΄λ€ μνΌ ν΄λμ€ νμ μΌλ‘ μ μΈνλ κ²μ΄ μ’λ€.
- λ€νμ±μ λ©μλ μ¬μ μμ μ°κ²°μμΌμ κ°μ²΄λ€μ΄ λμΌν λ©μμ§λ₯Ό λ°λλΌλ κ° κ°μ²΄μ νμ μ λ°λΌμ μλ‘ λ€λ₯Έ λμμ νκ² ν μ μλ€.
Shape s = new Rectangle(); s.draw();
π Shapeμ λ©μλκ° νΈμΆλλκ²μ΄ μλ, Rectangleμ draw() λ©μλκ° νΈμΆλλ€.
π μλ°μμλ λ©μλ νΈμΆμμ μ°Έμ‘° λ³μκ° μ€μ λ‘ κ°λ¦¬ν€λ κ°μ²΄μ λ°λΌ λ©μλκ° μλμ μΌλ‘ μ ν λλ€.
π λ°μΈλ© : λ©μλ νΈμΆμ μ€μ λ©μλμ λͺΈμ²΄μ μ°κ²° νλκ²!
π λμ λ°μΈλ© : μλ°μμλ μ€ν λ¨κ³μμ κ°μ²΄μ νμ μ λ³΄κ³ μ μ ν λ©μλλ₯Ό νΈμΆνλ€.
π λ€νμ±μ μ¬μ©νλ©΄ μμ€ν μ μ΅μνμ μν₯μ λ―ΈμΉλ©΄μ μλ‘μ΄ μ νμ κ°μ²΄λ₯Ό μ½κ² μΆκ°νμ¬ μμ€ν μ νμ₯ν μ μλ€.
νλμ ν΄λμ€ μμ λ€λ₯Έ ν΄λμ€λ₯Ό μ μν μ μλ κ²
- ν΄λμ€ λͺΈμ²΄λ μ μλμ§λ§ μ΄λ¦μ΄ μλ ν΄λμ€
- μ΄λ¦μ΄ μκΈ° λλ¬Έμ νλ²λ§ μ¬μ©κ°λ₯νλ€!
- μ½λμ μμ μ€μΌ μ μλ μ₯μ μ΄ μμ§λ§, νκΈ°λ² μλΉν λν΄, νλμ κ°μ²΄λ§ μμ±νλ©΄ λλ κ²½μ°μ λ§μ΄ μ¬μ©