추상화?
추상이란, 사물이나 표상을 어떤 성질, 공통성, 본질에 착안하여 그것을 추출하여 파악하는 것
공통적인 성질이나 본질을 추출하여 파악하는것이 추상화의 핵심이다.
🔷 추상 클래스( abstract class )
abstract의 키워드를 사용하면 상속 받는 클래스에서 공통적으로 구현해야 하는 클래스나 멤버를 만들 수 있습니다.
🔸 추상 클래스 형태
클래스 정의 앞에 abstract 키워드를 선언하면 클래스를 추상 클래스으로 불린다.
또는 추상 메서드가 하나라도 포함되어 있다면 추상 클래스로 정의가 된다.
추상 클래스에 선언 되는건 접근 제한자를 적지않으면 private이다.
public abstract class [ 클래스 이름 ]
{
//내용 구현
}
🔸 추상 메서드 형태
상속 받는 하위 클래스에서 반드시 재정의를 해야하므로 가상 메서드인 virtual 키워드를 붙이지 않아도 된다.
이때 추상 메서드에는 static, virtual 키워드는 사용할 수 없다.
public abstract [데이터 형][ 메소드 이름]();
🔷 추상 클래스의 특징
🔸 객체화(인스턴스화) 할 수 없다.
: 여러 파생 클래스에서 공유할 수 있는 기본 클래스의 공통적인 정의를 제공하는 것이 목적이기에 객체화를 할 수 없다.
🔸 추상 클래스에서는 추상 메서드 정의 할 수 있다.
public abstract class [클래스 이름]
{
public abstract void [함수이름]();
}
[ 코드 예시 ]
⟱
public abstract class Monster
{
private string name = "미니언";
public string GetName()
{
return name;
}
public abstract void PrintName();
}
🔸 추상 메서드에는 구현 부분이 없어 상속받은 클래스에서는 반드시 override 키워드를 이용해 재정의 해야한다.
public class void [클래스 이름] : [추상 클래스 이름]
{
public override void [상속받은 함수이름]
{
//내용 구현
}
}
[ 코드 예시 ]
⟱
public class Minion : Monster
{
public override void PrintName()
{
Console.WriteLine(GetName());
}
}
🔸 구조와 동작의 일관성을 가지고 있다.
여러 클래스에서 동일한 구조와 동작을 가지도록 일관성있는 디자인을 유지할 수있다.
🔷 추상 메서드를 재정의 하지 않는다면 어떻게 될까?
: 컴파일 에러가 난다.
즉, 추상 클래스는 여러 클래스 간에 공통된 특징을 추상화하여 코드의 일관성을 유지하고, 하위 클래스에서 각각 특화된 동작을 구현할 때 사용한다.
[ 전체 코드 ]
public abstract class Monster
{
private string name = "미니언";
public string GetName()
{
return name;
}
public abstract void PrintName();
}
public class Minion : Monster
{
public override void PrintName()
{
Console.WriteLine(GetName());
}
}
public class Program
{
static void Main(string[] args)
{
Minion monster = new Minion();
monster.PrintName();
}
}
아직 추상클래스와 인터페이스의 정확한 차이를 구분 못하는 것 같아 두 개를 비교하여 정확한 상황에 사용할 수 있도록 공부를 해야겠다.
'Unity > 개념 공부' 카테고리의 다른 글
[ 내일배움캠프 ] TIL.15 - 델리게이트 (0) | 2024.05.03 |
---|---|
[ 내일배움캠프 ] TIL.14 - 추상 클래스와 인터페이스 비교하기 (0) | 2024.05.02 |
[ 내일배움캠프 ] WIL.10 - C# 기초 & 개인 프로젝트 진행 (0) | 2024.04.26 |
[ 내일배움캠프 ] TIL.10 - Newtonsoft.Json (1) | 2024.04.26 |
[ 내일배움캠프 ] TIL.06 - C# 문법 종합반 2주차 강의_숙제 (0) | 2024.04.22 |