π§Έ μΈν°νμ΄μ€
λ€μ€ μμμ λ κ°μ΄μμ ν΄λμ€λ‘λΆν° μμλ°λ κ²μ λ§νλ€. μλ°λ μμΉμ μΌλ‘ μ€ μμμ μ§μνμ§ μλλ€. νμ§λ§ λ€μ€ μμμ μν΄ μΈν°νμ΄μ€ ν΄λμ€λ₯Ό μ 곡νκ² λμλ€.
μΈν°νμ΄μ€ ν΄λμ€λ λ³μλ₯Ό μ§μνμ§ μμΌλ(λͺ μΉ μΆ©λ λ°©μ§) μμλ μ μΈ κ°λ₯(public static final)νλ€. κ·Έλ¦¬κ³ μΆμ λ©μλ(μλΈ ν΄λμ€μμ μ¬μ μνλ©΄ μΆ©λ λ°©μ§κ° λκΈ° λλ¬Έμ)λ§ μ μΈ κ°λ₯νλ€.
μ¦, μ½λμ μ¬μ μλ₯Ό μν¨μ΄ μλλΌ μ μ΄λ§μ μν ν΄λμ€μ΄λ€.
π ν΄λμ€μ μ’ λ₯
- μΌλ° ν΄λμ€ = ꡬν ν΄λμ€
- μΈμ€ν΄μ€ μμ± κ°λ₯ (new μ°μ°μ μ¬μ© κ°λ₯)
- μΆμ ν΄λμ€
- μΌλ° λ©μλ + μΆμ λ©μλ
- νλ μ΄μμ μΆμ λ©μλλ₯Ό κ°μ§κ³ μλ ν΄λμ€
- μΈμ€ν΄μ€ μμ± λΆκ°λ₯
- μΈν°νμ΄μ€ ν΄λμ€
- μμμ μΆμ λ©μλ
- μΈμ€ν΄μ€ μμ± λΆκ°λ₯
2, 3λ²μ μ¬μ©νλ μ΄μ λ μμ ꡬ쑰λ₯Ό μ¬μ©νκΈ° μν΄μ μ¬μ©νλ€.
𧩠μμ€ μ½λ
𧩠μνΌν΄λμ€
package mycom.duck.dfinal;
import java.awt.Color;
import java.awt.Graphics;
import java.util.Random;
import mycom.duck.frame.MyFrame;
public abstract class Duck {
protected int x;
protected int y;
public static final int DUCK_SIZE=30;
public Duck(){
Random random = new Random();
this.x = random.nextInt(MyFrame.FRAME_WIDTH-100)+60;
this.y = random.nextInt(MyFrame.FRAME_HEIGHT-150)+80;
}
public Duck(int mx, int my){
this.x = mx;
this.y = my;
}
public abstract void display(Graphics g);
}
𧩠μλΈν΄λμ€
package mycom.duck.dfinal;
import java.awt.Color;
import java.awt.Graphics;
public class RedDuck extends Duck implements IFlyable {
public RedDuck(){
}
public RedDuck(int mx, int my){
super(mx, my);
}
@Override
public void display(Graphics g){
g.setColor(Color.RED);
g.fillOval(x, y, Duck.DUCK_SIZE, Duck.DUCK_SIZE);
}
@Override
public void fly(Graphics g){
g.setColor(Color.RED);
g.drawString("λ λ€", x-15, y+40);
}
}β
𧩠μΈν°νμ΄μ€ ν΄λμ€
package mycom.duck.dfinal;
import java.awt.Graphics;
public interface IFlyable {
public abstract void fly(Graphics g);
}
π§Έ μμ ꡬ쑰λ₯Ό μ΄μ©νμ¬ μ μ΄νλ λ°©λ²
displayAllDucks λ©μλλ μΌλ° μμμ μ΄μ©νμ¬ μ μ΄ν κ²μ΄λ€. μ μΊμ€ν μ νλλΌλ μ€λ²λ‘λ©ν λ©μλλ μλΈν΄λμ€μ κ²μ΄ νΈμΆλκΈ° λλ¬Έμ΄λ€.
flyAllDucks λ©μλλ μΈν°νμ΄μ€λ₯Ό μ΄μ©νμ¬ μ μ΄ν κ²μ΄λ€. μΈν°νμ΄μ€ ν΄λμ€λ‘ ν λ³νμ νλ©΄ ν΄λΉ μΈν°νμ΄μ€μ μλ κ²λ§ μ¬μ©κ°λ₯νκΈ° λλ¬Έμ(μ¬κΈ°μλ fly λ©μλλ§ μ¬μ©κ°λ₯) duck μ€μ fly λ©μλλ₯Ό μνν μ μλ κ°μ²΄λ§ μνλκ² λλ€. π¨ μ¬κΈ°μ ifλ¬ΈμΌλ‘ ν λ³νμ΄ κ°λ₯ν μ§ νμΈνκ³ μνν΄μΌνλ€.
package mycom.duck.dfinal;
import java.awt.Graphics;
import java.util.Random;
public class DuckManager {
private Duck[] ducks = new Duck[20];
public DuckManager() {
makeDucks();
}
private void makeDucks(){
Random random = new Random();
int type = 0;
if (ducks != null) {
for (int i=0; i<ducks.length; i++) {
type = random.nextInt(2);
switch (type) {
case 0:
ducks[i] = new RedDuck();
break;
case 1:
ducks[i] = new MallardDuck();
break;
default:
ducks[i] = new MallardDuck();
}
}
}
}
public void displayAllDucks(Graphics g){
for (Duck duck: ducks) {
duck.display(g);
}
}
public void flyAllDucks(Graphics g){
for (Duck duck: ducks) {
if (duck instanceof IFlyable) {
// 1λ² λ°©λ²
IFlyable duckfFlyable = (IFlyable) duck;
duckfFlyable.fly(g);
// 2λ² λ°©λ²
((IFlyable) duck).fly(g);
}
}
}
}
'π.λμΈνλ > π.μΉ΄μΉ΄μ€ν΄λΌμ°λμ€μΏ¨' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[JAVA] μμΈ Exception (0) | 2023.12.20 |
---|---|
[JAVA] Singleton Pattern (0) | 2023.12.18 |
[JAVA] μλ° λ°°μ΄ (0) | 2023.12.16 |
[JAVA] ν λ³ν (0) | 2023.12.16 |
[JAVA] μλ°μ GUI (0) | 2023.12.16 |