Hamutaro - Hamtaro 4

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();
    }
}

 

 

๊ณตํ†ต์  : ๊ฐ์ฒด ์ƒ์„ฑ์ด ๋ถˆ๊ฐ€๋Šฅํ•จ, ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ํ•˜์œ„ํด๋ž˜์Šค์—์„œ ๊ตฌํ˜„ํ•ด์•ผํ•จ

์ฐจ์ด์  : ์‚ฌ์šฉํ•˜๋Š” ํ‚ค์›Œ๋“œ, ์ถ”์ƒ ํด๋ž˜์Šค๋Š” ์ผ๋ฐ˜ ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ์ธํ„ฐํŽ˜์ด์Šค๋Š” ๋ฉ”์„œ๋“œ ์„ ์–ธ๋งŒ ๊ฐ€๋Šฅ