0. μΈν°νμ΄μ€λ?
μΈν°νμ΄μ€λ μΌμ’ μ μΆμν΄λμ€λ‘ μΆμλ©μλ, μμλ§ ν¬ν¨ κ°λ₯
π‘ μλ° 8 λΆν° default λ©μλ, static λ©μλλ₯Ό μΈν°νμ΄μ€μ λ©€λ²λ‘ μ¬μ©κ°λ₯
μΆμ ν΄λμ€μ²λΌ new λ₯Ό μ΄μ©ν κ°μ²΄μμ±μ ν μ μλ€.
- μΈν°νμ΄μ€μ μ μΈκ³Ό μμ
interface InterfaceName {
}
class ClassName implements InterfaceName{
}
1. μΈν°νμ΄μ€λ₯Ό μ°λ μ΄μ
κ·Έλ λ€λ©΄ μΆμ ν΄λμ€λ₯Ό μ¬μ©νμ§ μκ³ μΈν°νμ΄μ€λ₯Ό μ°λ μ΄μ κ° λ¬΄μμΌκΉ?
μΈν°νμ΄μ€λ μΆμ ν΄λμ€ λ³΄λ€ λ μΆμμ μΈ κ°λ μ΄λ€.
μΆμ ν΄λμ€λ ꡬν λ©μλλ ν¬ν¨μ ν μ μμ΄ νμ₯μ κ°λ μ΄λΌλ©΄
μΈν°νμ΄μ€λ ꡬν μ½λκ° μμ΄ κΈ°λ₯ ꡬνμ κ°μ νλ€.
μΆμ ν΄λμ€λ λ€μ€μμμ μ§μνμ§ μμ§λ§ μΈν°νμ΄μ€λ λ€μ€μμμ΄ κ°λ₯νλ€.
- λ€μ€ μμ μ
interface Screen{
public static final int inches = 32;
}
interface Keyboard{
void input();
}
class Computer implements Screen, Keyboard{
@Override
public void input() {
System.out.println(inches);
}
}

2. μΈν°νμ΄μ€μ λ€νμ±
μΈν°νμ΄μ€ νμ μ μ°Έμ‘°λ³μλ‘ μ΄λ₯Ό ꡬνν ν΄λμ€μ μΈμ€ν΄μ€λ₯Ό μ°Έμ‘°ν μ μλ€.
- Attackable μΈν°νμ΄μ€ νμ μ λ€μν ν΄λμ€ μΈμ€ν΄μ€ μμ±
interface Attackable{
void attack();
}
class Monster implements Attackable{
String name = "Monster";
@Override
public void attack() {
System.out.println(name);
}
}
class Player implements Attackable{
String name = "Player";
@Override
public void attack() {
System.out.println(name);
}
}
class Zombie implements Attackable{
String name = "Zombie";
@Override
public void attack() {
System.out.println(name);
}
}
μ΄λ κ² μΈν°νμ΄μ€ νμΌλ‘ λ€λ₯Έ ν΄λμ€ κ°μ²΄λ₯Ό μμ±νκ² λ λ ν΄λΉ κ°μ²΄μ λ©μλλ₯Ό λΆλ¬μ¨λ€.
class GameStart{
public static void main(String[] args) {
Attackable monster = new Monster();
Attackable player = new Player();
Attackable zombie = new Zombie();
monster.attack(); // monster attack νΈμΆ
player.attack(); // player attack νΈμΆ
zombie.attack(); // zombie attack νΈμΆ
}
}
3. μΈν°νμ΄μ€μ μ¬λ¬κ°μ§ μμ
μΈν°νμ΄μ€μ λͺ¨λ λ©€λ²λ³μλ public static final μ΄μ¬μΌ νλ€.
μ μ΄μλ₯Ό νΈμμ μλ΅νμ¬ μ¬μ©ν μ μμ΄ μλ΅λ μ μ΄μλ μ»΄νμΌλ¬μμ μλμΌλ‘ μΆκ°ν΄μ€λ€.
μ μ΄μλ₯Ό μλ΅ν λ©μλλ public abstractλ‘ μΆκ°λλ€.
- μΈν°νμ΄μ€μ λ©€λ²
interface Person{
int age = 10; // public static final
void eat(); // abstract method
public default void run(){};
public static void sleep(){};
}
4. μΈν°νμ΄μ€μ μμ
μΈν°νμ΄μ€λ λ€μ€ μμμ΄ κ°λ₯νλ©° μΈν°νμ΄μ€ κ°μ μμλ κ°λ₯νλ€.
interface InterfaceOne{
void one();
}
// μΈν°νμ΄μ€λ₯Ό μμ λ°λ μΈν°νμ΄μ€
interface InterfaceTwo extends InterfaceOne{
void two();
}
interface InterfaceThree{
void three();
}
// λ€μ€ μμ
class ClassName implements InterfaceTwo, InterfaceThree{
@Override
public void one() {
}
@Override
public void two() {
}
@Override
public void three() {
}
}
μΈν°νμ΄μ€λΌλ¦¬ μμμ extendsλ₯Ό μ°λ©° ν΄λμ€κ° μμμ λ°μλλ implements (ꡬν)μ μ¬μ©νλ€.

λν΄νΈ λ©μλλ₯Ό μ¬μ©ν μ μκ² λλ©΄μ μ΄λ¦μ΄ μ€λ³΅λμ΄ μΆ©λνλ κ²½μ°
1. μ¬λ¬ μΈν°νμ΄μ€μ λν΄νΈ λ©μλ κ°μ μΆ©λ
- μΈν°νμ΄μ€λ₯Ό ꡬνν ν΄λμ€μμ μ¬μ©ν μΈν°νμ΄μ€μ λν΄νΈ λ©μλλ₯Ό μ€λ²λΌμ΄λ© ν΄μΌ νλ€.
2. λν΄νΈ λ©μλμ μ‘°μ ν΄λμ€μ λ©μλ κ°μ μΆ©λ
- μ‘°μ ν΄λμ€μ λ©μλλ₯Ό μμνκ³ λν΄νΈ λ©μλλ 무μλλ€.