AI/Python
[Python] 객체지향 프로그래밍(OOP)
brave_sol
2025. 4. 29. 10:59
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!
}
}
반응형