07. 상속
·
💻 Programming Language/C#
namespace inheritEx { class Parent // 상속을 해주는 클래스를 부모, 슈퍼, 상위 클래스라고 일컫는다. // 기반(Base) 클래스라고도 부른다. { public Parent() { Console.WriteLine("Parent 생성자 호출"); } ~Parent() { Console.WriteLine("Parent 종료자 호출"); } public void showInfo() { Console.WriteLine("Parent Class"); } } class Child : Parent // 상속을 받는 클래스를 자식(파생)클래스라고 일컫는다. // 상속을 받을 때에는 : 키워드를 이용하여 상속받는다. // 상속받은 코드를 재활용해서 자신에게 맞는 코드로 수정하여 사용할 수 ..
05. this, this() 생성자
·
💻 Programming Language/C#
this 키워드 namespace ThisEx { class Student { private string name; private string grade; public void SetName(String name) { this.name = name; //name = name 형태로 사용하면 매개변수 name인지 클래스내 name인지 판별할 수 없다. // this.name 은 student 클래스 내 선언된 name } public string GetName() { return name; // 이 경우 student 내의 name임은 자명하다. } public void SetGrade(string grade) { this.grade = grade; } public string GetGrade() { re..
04. 깊은 복사의 이해 (Deep Copy)
·
💻 Programming Language/C#
Value Type => Stack memory에 저장 Reference Type => Heap memory에 저장 [Ex.1 - Shallow Copy] Demo1 demo1 = new Demo1(); demo1.aa = 100; demo1.bb = 1000; //Shallow Copy Demo1 demo2 = demo1; demo2.bb = 1111; Console.WriteLine("{0} {1}", demo1.aa, demo1.bb); Console.WriteLine("{0} {1}", demo2.aa, demo2.bb); Output 100 1111 100 1111 demo1 은 aa 와 bb의 주소값을 가지고 있고, aa와 bb의 값은 heap 메모리에 저장되어 있다. 따라서 위와 같은 복사는..
03. static 필드와 static 메소드
·
💻 Programming Language/C#
static(정적) 메소드와 정적 필드 한 프로그램안에 클래스는 하나만 존재하지만 인스턴스는 여러개가 존재 할 수 있다. 한 프로그램안에 똑같은 클래스는 두개가 존재할 수 없다. static 필드나 static 메소드는 클래스에 소속된 것이므로 프로그램안에 유일하게 존재한다. 인스턴스의 필드나 메소드는 인스턴스를 통해 접근하면 되고, static 필드와 메소드의 경우에는 해당 클래스의 이름을 통해 접근하면 된다. using System; using System.Threading; class Global { public static int Count = 0; public static void ResetCount() { Count = 0; } } class A { public A() { Global.Coun..
02. 생성자와 종료자
·
💻 Programming Language/C#
CLR(Common Language Runtime) => Garbage Collector 를 포함/ 어플리케이션을 실행하기 위한 실행환경을 제공하는 것. Garbage Collector => 메모리를 자동으로 관리 CLR의 Garbage Collector가 객체가 소멸되는 시점을 판단해서 종료자를 호출한다. 종료자는 될 수 있는한 사용하지 않는 것이 좋다. 기본생성자 : 매개변수가 없이 사용하는 생성자 사용자 지정 생성자 : 매개변수를 가지는 생성자이며, 사용자가 별도로 선언해야함. 이때 사용자 지정 생성자를 만든다면 기본생성자는 자동으로 생성되지 않음. 따라서 사용자 지정 생성자를 선언하였을때 기본생성자를 사용하고 싶다면 별도로 선언해 주어야함. 종료자 : 클래스의 이름에 ~ 를 붙힌 형태 생성자와 달..
01. 클래스와 객체
·
💻 Programming Language/C#
클래스와 객체 객체지향프로그래밍(Object Oriented Programming => OOP) : 컴퓨터 프로그램을 명령어의 목록으로 보는 시각에서 벗어나 여러 개의 독립된 단위, 즉 객체 들의 모임으로 파악하고자 하는 것이다. 각각의 객체는 메시지를 주고받고, 데이터를 처리할 수 있다. 눈에 보이는 모든 것들은 객체이고 프로그램상에서 객체를 구현할 수 있다. 객체들은 각각 저마다의 특성을 가지고 있다. 예를들어 사람을 예로 들면 사람의 이름, 사람의 나이, 성별 등등 여러가지 특성을 통해 사람이라는 객체를 묘사할 수 있다. 이러한 특성을 속성이라 하고, 객체가 할 수 있는 기능 혹은 행동을 메소드라고 표현한다. 객체지향 프로그래밍에서 가장 많이 등장하는 용어는 class이다. 클래스에 사람이라고 하는..