Backend/Java
[μλ°] μΈν°νμ΄μ€(Interface)μ μΆμν΄λμ€(Abstract)
carsumin
2021. 8. 18. 16:51

μΈν°νμ΄μ€
μΌμ’ μ μΆμ ν΄λμ€λ‘ interface ν€μλλ₯Ό ν΅ν΄ μ μΈνκ³ ,
μμμ implements ν€μλλ₯Ό ν΅ν΄ μΌλ° ν΄λμ€μμ μΈν°νμ΄μ€λ₯Ό ꡬνν μ μλ€.
μΈν°νμ΄μ€λ μ체λ‘λ κ°μ²΄ μμ±μ΄ λΆκ°λ₯νκ³ λ€μ€μμμ΄ κ°λ₯νλ€.
// μΈν°νμ΄μ€ μ μ
interface Animal {
void makeSound(); // μΆμ λ©μλ
void move(); // μΆμ λ©μλ
}
// μΈν°νμ΄μ€ ꡬν ν΄λμ€
class Dog implements Animal {
@Override
public void makeSound() {
System.out.println("λ©λ©");
}
@Override
public void move() {
System.out.println("κ°μμ§κ° λ¬λ¦°λ€");
}
}
// λ€λ₯Έ μΈν°νμ΄μ€ ꡬν ν΄λμ€
class Cat implements Animal {
@Override
public void makeSound() {
System.out.println("μΌμΉ");
}
@Override
public void move() {
System.out.println("κ³ μμ΄κ° μ ννλ€");
}
}
public class InterfaceExample {
public static void main(String[] args) {
Animal dog = new Dog();
dog.makeSound();
dog.move();
Animal cat = new Cat();
cat.makeSound();
cat.move();
}
}
μΆμν΄λμ€
μΆμλ©μλλ₯Ό ν¬ν¨ν ν΄λμ€λ‘ μμμ ν΅ν΄μ λ―Έμμ±λ©μλλ₯Ό μμ ν΄λμ€μμ μμ±νλ€.
μΆμν΄λμ€λ μμμ μν ν΄λμ€μ΄κΈ° λλ¬Έμ κ°μ²΄λ₯Ό μμ±ν μ μλ€.
// μΆμ ν΄λμ€ μ μ
abstract class Animal {
abstract void makeSound(); // μΆμ λ©μλ
void sleep() { // ꡬνλ λ©μλ
System.out.println("μ μλ λλ¬Ό");
}
}
// μΆμ ν΄λμ€ μμλ°μ ꡬ체 ν΄λμ€
class Dog extends Animal {
@Override
void makeSound() {
System.out.println("λ©λ©");
}
}
// μΆμ ν΄λμ€ μμλ°μ λ λ€λ₯Έ ꡬ체 ν΄λμ€
class Cat extends Animal {
@Override
void makeSound() {
System.out.println("μΌμΉ");
}
}
public class AbstractClassExample {
public static void main(String[] args) {
Animal dog = new Dog();
dog.makeSound();
dog.sleep();
Animal cat = new Cat();
cat.makeSound();
cat.sleep();
}
}
곡ν΅μ : κ°μ²΄ μμ±μ΄ λΆκ°λ₯ν¨, μ¬μ©νκΈ° μν΄μλ νμν΄λμ€μμ ꡬνν΄μΌν¨
μ°¨μ΄μ : μ¬μ©νλ ν€μλ, μΆμ ν΄λμ€λ μΌλ° λ©μλλ₯Ό μ¬μ©ν μ μμ§λ§ μΈν°νμ΄μ€λ λ©μλ μ μΈλ§ κ°λ₯