[JAVA] κ°μ²΄ μ§ν₯ μΈμ΄2
π± μ κ·Ό μ μ΄μ(νμ μ)
λ©€λ² λ³μμ λ©μλμλ μ κ·Ό μ μ΄μλ₯Ό μ§μ ν μ μλ€.
μ κ·Ό μ μ΄μλ₯Ό μ¬μ©νλ μ΄μ λ κ°μ²΄λ€κ° κ΄κ³μ λ°λΌμ μ κ·Όν μ μλ κ²κ³Ό μλ κ², κΆνμ ꡬλΆνκΈ° μν΄μμ΄λ€. ν΄λμ€ λ΄λΆμ μ μΈλ λ°μ΄ν°μ λΆμ μ ν μ¬μ©μΌλ‘λΆν° 보νΈν΄μΌνλλ° μ΄κ²μ λ°λ‘ μΊ‘μνλΌκ³ νλ€. μ κ·Ό μ μ΄μλ μΊ‘μνλ₯Ό λλ λꡬ μ€ νλμ΄λ€.
λμΌν ν΄λμ€ | κ°μ ν¨ν€μ§ λ΄ λͺ¨λ ν΄λμ€ |
λ€λ₯Έ ν¨ν€μ§μ μμλ ν΄λμ€ |
λ€λ₯Έ ν¨ν€μ§μ μμλμ§ μμ ν΄λμ€ |
|
public | O | O | O | O |
protected | O | O | O | X |
default | O | O | X | X |
private | O | X | X | X |
private : μ΄λ ν κ²½μ°μλ μ¬μ©μ΄ λΆκ°λ₯νλ€. ν΄λΉν΄λμ€ λ΄λΆμμλ§ μ¬μ©κ°λ₯νλ€.
default : λμΌν ν¨ν€μ§λΌλ©΄ μμ μ¬λΆμ μκ΄μμ΄ μ¬μ©κ°λ₯νλ€.
protected : λμΌν ν¨ν€μ§μ΄λ©΄ μμ μ¬λΆμ μκ΄μμ΄ μ¬μ©κ°λ₯νκ³ λ€λ₯Έ ν¨ν€μ§λΌλ©΄ μμλ κ²½μ°μλ§ μ¬μ©κ°λ₯νλ€.
public : λͺ¨λ ν΄λμ€μμ μ¬μ©κ°λ₯νλ€.
π± μΆμ ν΄λμ€
μΆμ ν΄λμ€λ μΆμ λ©μλκ° μ μΈλ μ μλ ν΄λμ€μ΄λ€. μΆμ λ©μλλ μ μΈλ§ λμ΄μκ³ κ΅¬νλΆλΆμ΄ μλ λ©μλμ΄λ€. λ€μλ§ν΄ λ¦¬ν΄ νμ , ν¨μ μ΄λ¦, νλΌλ―Έν° μ΄λ¦μ μ μΈλμ΄μμ§λ§ ꡬνλΆλΆμ μμ§ μκ³ μμλ°λ ν΄λμ€μμ ꡬνν΄μΌνλ€λ κ²μ μλ―Ένλ€.
μΌλ°ν΄λμ€μ λ¬λ¦¬ μΆμν΄λμ€λ μ§μ κ°μ²΄λ₯Ό μμ±ν μ μλ€. μμν΄λμ€λ₯Ό ν΅ν΄μλ§ κ°λ₯νλ€. μλνλ©΄ μμ§ μ μΈλ§ νμ λΏ κ΅¬νλμ΄μμ§ μλ ν΄λμ€μ΄κΈ° λλ¬Έμ΄λ€.
[ μ½λ : μΆμν΄λμ€ ]
abstract class Bird {
private int x, y, z;
void fly(int x, int y, int z) {
printLocation();
System.out.println("μ΄λν©λλ€.");
this.x = x;
this.y = y;
if (flyable(z)) {
this.z = z;
} else {
System.out.println("μ΄ μλ λ μ μμ΅λλ€");
}
printLocation();
}
abstract boolean flyable(int z);
public void printLocation() {
System.out.println("νμ¬ μμΉ (" + x + ", " + y + ", " + z + ")");
}
}
class Pigeon extends Bird {
@Override
boolean flyable(int z) {
return true;
}
}
class Peacock extends Bird {
@Override
boolean flyable(int z) {
return false;
}
}
public class Main {
public static void main(String[] args) {
Bird pigeon = new Pigeon();
Bird peacock = new Peacock();
// Bird brid = new Brid() -> λΆκ°λ₯
System.out.println("-- λΉλκΈ° --");
pigeon.fly(1, 1, 3);
System.out.println("-- 곡μμ --");
peacock.fly(1, 1, 3);
System.out.println("-- λΉλκΈ° --");
pigeon.fly(3, 3, 30000);
}
}
π± μΈν°νμ΄μ€
μΈν°νμ΄μ€λ μΆμ ν΄λμ€λ³΄λ€ λμ± μλ²½ν μΆμνλ₯Ό μ 곡νλ€. μΆμν΄λμ€λ μΆμ λ©μλ μΈμ λ©€λ² λ³μλ μΌλ° λ©μλλ₯Ό κ°μ§ μ μμ§λ§, μΈν°νμ΄μ€λ μΆμ λ©μλμ μμλ§ κ°μ§ μ μλ€. λ μΆμν΄λμ€μλ λ€λ₯΄κ² λ€μ€ μμμ΄ κ°λ₯νλ€. κ·Έλμ μ£Όλ‘ μΆμν΄λμ€λ ν΄λμ€λ₯Ό μμλ°μ μ΄μ©κ³Ό νμ₯νκΈ° μν΄ μ¬μ©λκ³ , μΈν°νμ΄μ€λ ꡬννλ €κ³ νλ κ°μ²΄λ€μ λμμ λͺ μΈνλλ° μ¬μ©λλ€.
[ μ½λ : μΈν°νμ΄μ€ ]
interface Bird {
void fly(int x, int y, int z);
}
class Pigeon implements Bird{
private int x,y,z;
@Override
public void fly(int x, int y, int z) {
printLocation();
System.out.println("λ μκ°λλ€.");
this.x = x;
this.y = y;
this.z = z;
printLocation();
}
public void printLocation() {
System.out.println("νμ¬ μμΉ (" + x + ", " + y + ", " + z + ")");
}
}
public class Main {
public static void main(String[] args) {
Bird bird = new Pigeon();
// Bird bird1 = new Bird(); : λΆκ°λ₯
bird.fly(1, 2, 3);
// bird.printLocation(); : λΆκ°λ₯
}
}
μΆμ²
μ²μ μμνλ JAVA νλ‘κ·Έλλ°(κΉμΆ©μ μ )