티스토리 뷰

1. 개념 비교

추상화 구현 세부사항을 숨기고 필요한 기능한 보여주는 개념
캡슐화 데이터를 은닉하고 메서드만 외부에 노출하는 구조
다형성 동일한 메서드를 여러 클래스에 재정의하는 구조
상속성 기존 클래스를 재사용해서 새로운 클래스를 만드는 구조
// 1. 추상화: Animal이라는 추상 클래스(필요한 기능만 정의)
abstract class Animal {
    private String name; // 2. 캡슐화: private 변수 (외부에서 직접 접근 못 함)

    public Animal(String name) {  // 생성자
        this.name = name;
    }

    public String getName() {  // getter 메소드만 외부에 제공
        return name;
    }

    public abstract void sound();  // "소리 내기"는 구체 동물들이 알아서 구현
}

// 3. 상속성: Dog, Cat이 Animal을 상속
class Dog extends Animal {
    public Dog(String name) {
        super(name);
    }

    @Override
    public void sound() {   // 4. 다형성: sound()를 Dog에 맞게 재정의
        System.out.println(getName() + " says: Bark!");
    }
}

class Cat extends Animal {
    public Cat(String name) {
        super(name);
    }

    @Override
    public void sound() {   // 4. 다형성: sound()를 Cat에 맞게 재정의
        System.out.println(getName() + " says: Meow!");
    }
}

// 메인 클래스
public class Main {
    public static void main(String[] args) {
        Animal myDog = new Dog("Buddy");  // 업캐스팅
        Animal myCat = new Cat("Kitty");

        myDog.sound(); // Buddy says: Bark!
        myCat.sound(); // Kitty says: Meow!
    }
}

 

반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
글 보관함