본문 바로가기

개인공부/C#

(29)
[C#] 상속(Inheritance) ■ 상속(Inheritance) : - 상속은 부모가 자식에게 재산 혹은 권리 등을 물려주는 것으로 부모 클래스의 기능을 자식 클래스가 상속받아 사용하는 것 - 특정 기능을 제공하는 부모클래스를 정의하고 자식 클래스는 해당 기능을 상속하거나 재정의 할 수 있다 - derived class는 2개 이상의 base class를 가질 수 없다 - base class에서 정의된 private 멤버는 상속 받을 수 없다 - 부모 클래스 = 기준 클래스(base class) - 자식 클래스 = 파생 클래스(derived class) ■ Example class Parents { public int Num = 100; public void PrintNum() { Console.WriteLine($"Num은 {Num}..
[C#] 접근 제한자(Access Modifier) ■ 접근 제한자(Access Modifier) : - '접근 제한자' 혹은 '접근 한정자'라고 불림 - class 및 field, method 등의 접근 범위를 정의하는데 사용 ■ 접근 제한자(Access Modifier) 종류 : 접근 제한자 설명 public 클래스의 내부/외부 모든 곳에서 접근 가능 protected 클래스 외부에서 접근 불가, 파생 클래스에서 접근 가능 private 클래스 내부에서만 접근 가능, 파생 클래스에서도 접근 불가 internal 같은 어셈블리에 있는 코드에서만 public으로 접근 가능, 다른 어셈블리에 있는 코드에서는 private과 같은 수준의 접근성 protected internal 같은 어셈블리에 있는 코드에서만 protected로 접근 가능, 다른 어셈블리에 ..
[C#] 정적(Static) 클래스, 필드, 메서드 ■ 정적 클래스(Static Class) : - 기본적으로 비정적 클래스(Non-Static)와 동일하지만, 정적 클래스(Static)는 인스턴스화 할 수 없다. - new 연산자를 사용하여 변수를 만들 수 없음 - 모든 클래스 멤버가 static 멤버로 되어 있음 - 특정 인스턴트에 고유한 데이터를 저장하거나 검색할 필요가 없을 때 사용 ■ Example class Program { static void Main(string[] args) { Console.WriteLine($"StaticClass.x = {StaticClass.x}"); StaticClass.StaticTest(20); } } static class StaticClass { public static int x = 10; public ..
[C#] 얕은 복사(Shallow Copy), 깊은 복사(Deep Copy) ■ 얕은 복사(Shallow Copy) : - 새 메모리 공간 할당하지 않음, 주소 값만 복사 - 복사된 두 객체는 동일한 메모리 사용 ■ 깊은 복사(Deep Copy) : - 새 메모리 공간 할당, 값 자체를 복사 - 복사된 두 객체는 독립적으로 메모리 사용 ■ Example class TestClass { public int x; public int y; public TestClass DeepCopy() { TestClass testCopy = new TestClass(); testCopy.x = this.x; testCopy.y = this.y; return testCopy; } } class Program { static void Main(string[] args) { Console.WriteLi..
[C#] 클래스(Class) ■ 클래스(Class) : - 유사한 성질의 속성(Field)과 동작(Method)을 하나의 단위로 결합한 것 - 객체(object)를 만들기 위해 정의해 놓은 것 - 비유적 설명 : · 붕어빵 틀(class), 붕어빵(object) · 설계도(class), 설계도로 만들어낸 물건(object) 객체지향 프로그래밍(OOP : Object Oriented Programming) : - 모든 것을 객체(object)로 표현하려는 프로그래밍 패러다임(방법론) - 추상화, 캡슐화, 상속, 다형성 - 코드 재사용성이 좋음 - 유지보수가 쉬움 - 대규모 프로젝트에 적합 객체(Object) : - 세상의 모든 유형적(사람, 자동차 등), 무형적(개념, 행위)인 것을 표현한 것 ■ Class 구조 ■ Example c..
[C#] Call by Value, Call by Reference Method 호출 방식에는 Call by value, Call by reference가 있음 ■ Call by Value : 값에 의한 호출 - 값에 의한 호출이기 때문에 x, y에 a, b의 값이 할당 - x, y를 수정해도 a, b는 영향 없음 ■ Example static unsafe void Main(string[] args) { int a = 100; int b = 200; Console.WriteLine($"[Main] a Addr = {(long)&a:X}, b Addr = {(long)&b:X}"); Console.WriteLine($"[Main] a Value = {a}, b Value = {b}"); Console.WriteLine(); CallByValue(a, b); Console...
[C#] 메서드(Method) ■ 메서드(Method)란? - 일련의 작업을 하나로 묶은 명령문의 집합 - 중복 코드 제거, 가독성 향상 ■ 메서드 기본 형태 : - 입력 X(매개변수), 출력 X(반환 값) - 입력 X(매개변수), 출력 O(반환 값) - 입력 O(매개변수), 출력 X(반환 값) - 입력 O(매개변수), 출력 O(반환 값) ■ Example static void Main(string[] args) { Test01(); int A = Test02(); Console.WriteLine($"Main : Test02의 반환 값은 {A} 입니다."); Console.WriteLine(); Test03(20); int B = Test04(2, 3); Console.WriteLine($"Main : Test04의 반환 값은 {B}..
[C#] 흐름제어-점프문(Jump Statement) ■ 점프문(Jump Statement) : - 실행 흐름을 끊거나 실행 위치를 원하는 곳으로 이동할 때 사용 - break, continue, goto, return, throw ■ Break : - 현재 실행 중인 반복문 혹은 switch문의 실행을 중단 할 때 사용 switch(조건식) { case 상수1: ... 작업 내용 ... break; case 상수2: ... 작업 내용 ... break; default: ... 작업 내용 ... break; } for(초기화식; 조건식; 증감식) { ... 작업 내용 ... if(조건식) { break; } ... 작업 내용 ... } ■ Example for(int i = 0; i < 5; i++) { if(i == 3) { break; } Console..