π± μλ° μμ
μλΈν΄λμ€(sub class, μμ)λ μνΌν΄λμ€(super class, λΆλͺ¨)λ₯Ό μ νν΄, μνΌν΄λμ€μ λͺ¨λ κ²μ μμλ°μ μ¬μ©ν μ μλ κ²μ΄λ€. λ¨ privateμ κ²½μ°λ μ¬μ©ν μ μλ€.
μλΈ ν΄λμ€ μμ extends ν€μλμ ν¨κ» μνΌν΄λμ€λͺ μ μμ±νλ©΄ λλ€. νλλ§ κ°λ₯(λ¨μΌ μμ)νλ©°, μνΌν΄λμ€μ κΈ°λ₯μ λν΄ λ λ§μ κΈ°λ₯μ κ°λλ‘ μλΈν΄λμ€λ₯Ό μμ±νλ€.
λ³μλ privateλ‘ μ μΈνκ³ getter-setterλ‘ μ μ΄νλ κ²μ΄ μ’μ§λ§ μμλ protectedλ‘ μ μΈν΄ 곡μ νλλ‘ νμλ€.
β¨ μλΈν΄λμ€μ μμ±μλ μλμΌλ‘ super();μ μ€νν΄ μνΌ ν΄λμ€μ μμ±μλ₯Ό μλμΌλ‘ λΆλ₯΄κ² λλ€.
β¨κΈ°λ³Έ μμ±μκ° μλ μΈμκ° μλ μμ±μλ₯Ό λΆλ₯Ό λλ super(10,20); μ΄λ κ² μμ±ν΄ λΆλ₯΄λ©΄ λλ€.
β¨ @Override: λ©νμ 보λ₯Ό μμ€ν κ³Ό μ¬μ©μ(κ°λ°μ)μκ² λͺ¨λ μ λ¬νκΈ° μν΄ @κΈ°νΈλ₯Ό μ¬μ©νλ€. μμ νλ©΄ μ λλ€!
< μ½λ μμ >
< μνΌ ν΄λμ€ >
package mycom.dept.upgradeGame;
import java.util.Random;
public class Character {
protected int x;
protected int y;
protected String myshape = "Character";
public Character() {
Random random = new Random();
this.x = random.nextInt(800);
this.y = random.nextInt(600);
}
public Character(int x, int y) {
this.x = x;
this.y = y;
}
public void display() {
System.out.println(x + ", " + y + " = " + myshape);
}
}
< μλΈ ν΄λμ€ >
package mycom.dept.upgradeGame;
public class Player extends Character {
public Player() {
this.myshape = "Player";
}
public Player(int mx, int my) {
super(mx, my);
this.myshape = "Player";
}
@Override
public void display() {
System.out.print("*** ");
super.display();
}
}
π± μλ° μμμ νΉμ§
1. μ½λμ μ¬μ¬μ©μ±: μΆμν, 곡ν΅μ½λλ₯Ό ν κ³³μ λκ³ μ¬μ©νκΈ° μν΄μ
2. μ μ΄μ©λ: λͺ¨λ μλΈν΄λμ€λ₯Ό μνΌν΄λμ€λ‘ μ μ΄νκ³ μΆμ΄μ
π± ν¨μμ μ¬μ μ(Override)
μνΌν΄λμ€μ μ κ·Όλ°©μμ μ μ§νλ©° κ°μμ κ³ μ νΉμ±μ κ°λλ‘ μμ±ν΄μΌ νλ€.
μνΌν΄λμ€μ ν¨μλ₯Ό μλΈν΄λμ€μμ μ¬μ μνλ©΄ μνΌν΄λμ€μ ν¨μλ₯Ό 보μ΄μ§ μλ μνλ‘ λ§λ λ€.
= not visible μνλ‘ λ³κ²½λ¨. κ·Έλμ μ¬μ μν λ³ΈμΈμ ν¨μλ₯Ό μ¬μ©ν μ μλ κ²μ΄λ€.
λ§μ½ μνΌν΄λμ€μ ν¨μλ₯Ό μ¬μ©νλ €λ©΄ superλ₯Ό μ¬μ©ν΄μ λΆλ₯Ό μ μλ€.
π³ μΆμ λ©μλ
μΆμ λ©μλ: ꡬνλΆ μμ΄ λ¨Έλ¦¬λ§, νλ§ μμ±νλ κ²
μμλ°μ μλΈν΄λμ€κ° 무쑰건 μ¬μ μ νλλ‘ νκΈ° μν΄μ μνΌν΄λμ€μμ μΆμ λ©μλλ₯Ό μμ±νλ€. μ΄λ κ² νλ©΄ κ°μ μ±μ΄ λΆμ¬λκΈ° λλ¬Έμ λͺ¨λ μλΈν΄λμ€κ° λ³ΈμΈλ§μ μΆλ ₯κΈ°λ₯μ κ°λλ‘ ν μ μλ€. (μλ μμ)
μ΄λ κ² νκΈ° μν΄μλ ν΄λμ€μ ν΄λΉ λ©μλλ₯Ό abstractλ₯Ό μμ±ν΄μΌ νλ€. μλμ κ°μ΄ Duckμ μΆμ ν΄λμ€λ‘ μμ±νκ³ , displayλ₯Ό μΆμ λ©μλλ₯Ό μμ±νμλ€.
π€κ·Έλ λ€λ©΄ μΆμν΄λμ€λ₯Ό μ μ¬μ©νλ κ²μΌκΉ?
μΆμν΄λμ€λ μμμ ν΅ν΄ μ½λλ₯Ό μ¬μ¬μ©μ μν¨λ μμ§λ§ λ μ€μν κ²μ μ μ΄(μ μΊμ€ν = νλ³ν)λ₯Ό νκΈ° μν΄μ μ¬μ©νλ κ²μ΄λ€. κ°μ μ΄λ¦μ κΈ°λ₯μ΄λΌλ λ³ΈμΈ κ³ μ μ νΉμ±μ κ°μ§ κΈ°λ₯μΌλ‘ λ³κ²½νμ¬ μ¬μ©ν μ μλλ‘ νλ κ²μ΄λ€.
κ°μ₯ νν μμλ‘ λλ¬Όμ μΈμμλ¦¬κ° μλ€. Animalμ μΆμν΄λμ€λ‘ μ μΈ, soundλ₯Ό μΆμ λ©μλλ‘ μ μΈνλ€λ©΄ κ°κ°μ λλ¬Όλ§λ€ λ³ΈμΈμ κ³ μ μΈμμλ¦¬λ‘ sound λ©μλλ₯Ό λ³κ²½νμ¬ μ¬μ©ν μ μκ² λλ κ²μ΄λ€.
β¨ Duck.display()λ₯Ό κ°μ μ±μ λκ³ λ΄λ €λ³΄λ΄(μΆμλ©μλ) ν΄λΉ λ©μλλ₯Ό μ¬μ μνμ§ μμΌλ©΄ ν΄λΉ μ€λ₯κ° λ°μνκ² λλ€.
β¨ μ΄λ κ² μΆμν΄λμ€λ‘ μμ±λ ν΄λμ€λ κ°μ²΄μμ±(μΈμ€ν΄μ€)μ΄ λΆκ°λ₯νλ€. μλνλ©΄ μΆμ λ©μλλ ꡬνλΆκ° μμ΄ λ©λͺ¨λ¦¬ ν λΉμ΄ λΆκ°λ₯νλ€. μ¦, NullμΈ μνμ΄λ€. λ§μ½ μΆμν΄λμ€λ‘ μΈμ€ν΄μ€λ₯Ό μμ±νλ©΄ μΆμ λ©μλμ μ κ·Όν μ μκΈ° λλ¬Έμ μ€λ₯κ° λ°μν μ μμΌλ―λ‘ μ κ·Όμ λ§μ κ²μ΄λ€.
μ¦, μΆμν΄λμ€λ μμμ©μΌλ‘ μ¬μ©νλ κ²μ΄λ€. μΆμν΄λμ€λ₯Ό μ΄μ©νμ¬ μλΈν΄λμ€λ₯Ό λ§λ€μ΄ μ¬μ©νλ©΄ λλ€.
< μ½λ μμ>
< μνΌ ν΄λμ€ >
public abstract class Duck {
protected int x;
protected int y;
protected String shape = "Duck";
public Duck(){
Random random = new Random();
this.x = random.nextInt(100);
this.y = random.nextInt(100);
}
public Duck(int mx, int my) {
this.x = mx;
this.y = my;
}
public abstract void display();
}
< μλΈ ν΄λμ€ >
package mycom.dept.duck;
public class RedDuck extends Duck {
public RedDuck(){
this.shape = "RedDuck";
}
public RedDuck(int mx, int my) {
super(mx, my);
this.shape = "RedDuck";
}
@Override
public void display() {
System.out.print("RED: ");
System.out.println(shape + "=(" + x + "," + y + ")");
}
}
'π.λμΈνλ > π.μΉ΄μΉ΄μ€ν΄λΌμ°λμ€μΏ¨' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[JAVA] ν λ³ν (0) | 2023.12.16 |
---|---|
[JAVA] μλ°μ GUI (0) | 2023.12.16 |
[JAVA] μλ° λ³μ (0) | 2023.12.14 |
[JAVA] ν΄λμ€μ λ©λͺ¨λ¦¬ (0) | 2023.12.13 |
[JAVA] μ»΄ν¨ν°μ ꡬ쑰 λ° νλ‘κ·Έλ¨ μ€ν (0) | 2023.12.12 |