객체지향 프로그래밍(OOP, Object-Oriented Programming)의 4대 원칙은
캡슐화, 상속, 다형성, 추상화 입니다.
캡슐화 (Encapsulation) 란❓
1️⃣ 데이터(변수)와 메서드를 하나로 묶고, 외부에서 직접 접근하지 못하도록 보호하는 것
2️⃣ 정보 은닉(Information Hiding)을 통해 데이터 보호 및 무결성 유지
3️⃣ private, protected, public 같은 접근 제한자를 사용해 구현
✅ 장점
○ private로 데이터를 보호하고 public 메서드를 통해 안전하게 접근 할 수 있습니다.
○ 불필요한 직접 접근을 막아 데이터의 안정성을 유지합니다.
class Animal
{
private string myDog; // 외부에서 직접 접근 불가
public void SetSpeak(string newSpeak) //setter 메서드
{
if(!string.IsNullOrEmpty(newSpeak))
{
myDog = newSpeak;
}
}
public void GetSpeak() // getter 메서드
{
return myDog;
}
}
class Program
{
static void Main()
{
Animal a = new Animal();
a.SetSpeak("왈왈");
Console.WriteLine(a.GetSpeak()); // 출력 : 왈왈
}
}
상속 (Inheritance) 란 ❓
1️⃣ 부모 클래스의 속성과 메서드를 자식 클래스가 물려받아 사용할 수 있게 하는 것
2️⃣ 코드의 재사용성 증가 및 유지보수 편리
3️⃣ : (콜론)으로 부모 클래스를 상속받습니다.
✅ 장점
○부모의 클래스를 상속받아 매서드를 재사용 할 수 있습니다.
○ 코드의 재사용성이 증가하고 유지보수가 편리해집니다.
class Animal
{
public void Eat()
{
Console.WriteLine("이 동물은 먹는 활동을 합니다");
}
}
class Dog : Animal // Animal 클래스 상속받음
{
public void Bark()
{
Console.WriteLine("왈왈");
}
}
class Program
{
static void Main()
{
Dog myDog = new Dog();
myDog.Eat(); // 부모 클래스의 메서드 사용가능
myDog.Bark(); // 자식 클래스의 메서드 사용
}
}
다형성 (Polymorphism) 이란❓
1️⃣ 같은 이름의 메서드가 여러 형태로 동작할 수 있도록 하는 것을 말합니다.
2️⃣ 오버로딩(Overloading) → 같은 클래스에서 같은 이름의 메서드를 매개변수 다르게 여러개 정의
3️⃣ 오버라이딩(Overriding) → 부모 클래스의 메서드를 자식 클래스에서 재정의하여 다르게 동작
✅장점
○ 부모 타입으로도 자식 클래스의 오버라이딩된 메서드를 호출할 수 있습니다.
○ 런타임 시점에서 객체 타입에 맞게 적절한 메서드가 실행됩니다.
https://dingdong.tistory.com/16
오버로딩과 오버라이딩의 차이점
오버로딩❓같은 이름의 *메서드를 여러 개 정의할 수 있는 기능단, *매개변수의 개수나 타입이 다르게 설정되어 있어야 합니다.1️⃣ 메서드 이름은 같아야 합니다2️⃣ 매개변수 개수, 타입, 순
dingdong.tistory.com
추상화 (Abstraction) 란❓
1️⃣ 불필요한 구현 세부 사항을 숨기고, 핵심 기능만 제공하는 것 입니다.
2️⃣ 인터페이스(interface) 또는 추상 클래스(abstract class)를 사용하여 설계합니다.
3️⃣ 유연한 설계가 가능함으로 유지보수성이 향상됩니다.
❌ 주의사항
○ 추상 클래스(abstract class)는 인스턴스화 불가능, 자식 클래스에서 반드시 구현해야 합니다.
✅ 장점
○ 불필요한 상세 구현을 감추고, 필수 기능만 제공하여 코드의 일관성을 유지합니다.
abstract class Animal //클래스에서 abstract 명시
{
public abstract void MakeSound(); // 추상 메서드 (구현x)
public void Sleep()
{
Console.WriteLine("zzz...");
}
}
class Dog : Animal
{
public override void MakeSound() // 자식이 추상 메서드 구현
{
Console.WriteLine("왈왈");
}
}
class Program
{
static void Main()
{
Dog myDog = new Dog();
myDog.MakeSound(); // 출력 : 왈왈
myDog.Sleep(); // 출력 : zzz...
}
}
긴 글 읽어주셔서 감사합니다
도움이 되셨다면 공감 & 댓글 응원 부탁드립니다
'Unity > c# 공부' 카테고리의 다른 글
C# 문자열 메소드 및 서식 지정자 사용 (0) | 2025.03.05 |
---|---|
(참고용)최적화를 위한 데이터 형식 (0) | 2025.03.05 |
C++과 C#의 차이점 (0) | 2025.02.24 |
가상함수(virtual Function),캐스팅(형 변환) (0) | 2025.02.23 |
오버로딩과 오버라이딩의 차이점 (0) | 2025.02.22 |