CS/C# (5) 썸네일형 리스트형 [ C# ] 상속, 인터페이스, 추상 클래스 1. 상속상속= 기존 클래스(부모 클래스)의 속성과 메서드를 재사용하고 확장할 수 있는 기능= " : " 키워드를 사용하여 상속 구현= " base " 키워드를 통해 부모 클래스에 접근 다이아몬드 문제= 다중 상속 시, 동일한 조상을 가지는 클래스가 중복되는 경우 발생하는 모호성 문제= C#은 클래스의 다중 상속을 지원하지 않음= 인터페이스를 통해 해결 가능public class Parent{ public void Show() => Console.WriteLine("Parent method");}public class Child : Parent{ public void Display() => Console.WriteLine("Child method");}// 사용 예시Child child = n.. [ C# ] 값 형식, 참조 형식 1. 값 형식, 참조 형식값 형식= 데이터를 직접 저장하는 형식= 스택 메모리에 실제 데이터 할당 참조 형식= 참조할 데이터 위치를 저장하는 형식= 힙 메모리에 실제 데이터 할당= 스택 메모리에 힙 메모리 주소 할당2. 메모리메모리는 크게 4 가지 영역으로 나뉘어져 있다. 코드 영역= 실행할 프로그램의 코드가 저장되는 영역 데이터 영역= 전역 변수 및 정적 변수가 저장되는 영역= 프로그램이 시작될 때 할당되고 종료할 때 해제 힙 영역= 동적으로 할당된 메모리가 저장되는 영역= 사용자 필요에 의해 메모리가 할당되고 가비지 컬렉터에 의해 해제= 런타임에 메모리 크기 결정 스택 영역= 지역 변수 및 매개 변수가 저장되는 영역= 함수 또는 메서드가 호출될 때 할당되고 종료될 때 해제= 컴파일 타임에 메모리 크기.. [ C# ] Callback, Delegate, Event 1. Callback콜백(Callback)= 함수를 다른 함수에 전달하여 나중에 호출되도록 하는 기법 ( 의뢰인 → 비서 → 사장 )= 주로 비동기 처리에 사용= 비서 역할을 Delegate가 수행 가능2. Delegate대리자(Delegate)= 메서드를 참조하는 타입= 메서드를 매개변수로 전달하거나 변수에 할당할 수 있게 해줌// Delegate 선언public delegate void EnemyAttackHandler(float damage);public class Enemy{ public event EnemyAttackHandler OnAttack; // 전달받은 Callback 메서드 호출 public void Attack(float damage) { OnAtt.. [ C# ] 객체지향 프로그래밍 1. SOLID 원칙SOLID 원칙은 객체지향 프로그래밍의 5가지 설계 원칙으로, 유지 보수 및 확장성을 위한 방법을 제공한다. 단일 책임 원칙 (SRP : Single Responsibility Principle)= 각 클래스는 하나의 역할만 가지고 있어야 한다. 개방-폐쇄 원칙 (OCP : Open-Closed Principle)= 확장에 열려있고, 변경에 닫혀 있어야 한다.= 새로운 기능을 추가하는 경우, 기존 코드를 변경하지 않고 확장할 수 있어야 한다. 리스코프 치환 원칙 (LSP : Liskov Substitution Principle)= 하위 클래스는 상위 클래스를 대체할 수 있어야 한다.= 자식 클래스는 부모 클래스의 필드 및 메서드를 사용할 수 있어야 한다. 인터페이스 분리 원칙 (IS.. [ C# ] 객체와 한정자 1. 객체, 클래스객체는 클래스의 인스턴스이고, 각 객체는 필드와 메서드를 가지고 있다.여기서 필드는 상태, 메서드는 행동을 표현한다. 클래스는 객체를 생성하기 위한 틀이라고 생각하면 된다. 이를 기반으로 생성된 인스턴스가 객체이다. 2. 생성자생성자는 객체를 생성할 때 호출되어 객체를 초기화해주는 역할을 가지고 있다. C#은 기본적으로 생성자를 구현하지 않아도 사용 가능한 매개변수가 없는 생성자를 지원한다.public class Test{ int n;}class Program{ static void Main(string[] args) { Test test = new Test(); }} 만약 생성자를 하나라도 구현한다면 기본 생성자의 지원이 중단된다. 오버로딩을 통해 매.. 이전 1 다음