카테고리 없음

25.02.21(금) - TIL 25일차 Unity 입문

rxo2 2025. 2. 21. 20:56

객체지향 강의를 들었음에도 이해가 되질않아 GPT 에게 물었다

캡슐화 - Encapsulation

데이터(변수)와 메서드(함수)를 하나의 단위로 묶고, 외부에서 직접 접근하지 못하도록 보호하는 개념

상속 - Inheritance

기존 클래스(부모)를 재사용하여 새로운 클래스(자식)를 만드는 개념

:(콜론) 을 사용하여 클래스 상속 가능

부모 클래스의 기능을 자식 클래스가 물려받아 양쪽에서 다 사용할 수 있음

 

다형성 - Polymorphism

같은 메서드가 다양한 형태로 동작할 수 있는 개념

오버라이딩(Overriding) 과 오버로딩(Overloading) 방식으로 구현 가능

 

메서드 오버라이딩 (Method Overriding)

부모 클래스의 메서드를 자식 클래스에서 재정의하는 기능

virtual 키워드 → 부모 클래스

override 키워드 → 자식 클래스

 

메서드 오버로딩 (Method Overloading)

같은 이름의 메서드를 매개변수의 타입 또는 개수를 다르게 하여 여러 개 정의하는 기능

class MathOperations
{
    public int Add(int a, int b) // 정수 덧셈
    {
        return a + b;
    }

    public double Add(double a, double b) // 실수 덧셈 (오버로딩)
    {
        return a + b;
    }
} / / Add 메서드를 중복으로 사용하였지만 매개변수가 달라 오버로딩 가능 

 

 

추상화- Abstraction

필요한 정보만 외부에 제공하고, 불필요한 내부 구현은 숨기는 개념

공통 기능을 정의하고, 자식 클래스에서 반드시 구현해야 하는 메서드를 포함

일반 메서드와 추상 메서드(구현 없는 메서드)를 동시에 가질 수 있음

abstract class Animal  // 추상 클래스
{
    public void Eat()  // 일반 메서드 (구현 있음)
    {
        Console.WriteLine("동물이 먹습니다.");
    }

    public abstract void MakeSound();  // 추상 메서드 (구현 없음)
}

class Dog : Animal  // Animal 클래스를 상속받은 Dog 클래스
{
    public override void MakeSound()  // 반드시 구현해야 함
    {
        Console.WriteLine("멍멍!");
    }
}

Dog myDog = new Dog();
myDog.Eat();       // "동물이 먹습니다." 출력
myDog.MakeSound(); // "멍멍!" 출력