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 // 상속을 받는 클래스를 자식(파생)클래스라고 일컫는다. // 상속을 받을 때에는 : 키워드를 이용하여 상속받는다. // 상속받은 코드를 재활용해서 자신에게 맞는 코드로 수정하여 사용할 수 ..
06. 접근제한자(Access Modifier)
·
💻 Programming Language/C#
namespace AccessModifierEx { class Demo { // public 접근 제한자 public static void public_method() { } // private 접근 제한자 private static void private_method() { } // protected 접근 제한자 protected static void protected_method() { } // internal 접근 제한자 internal static void internal_method() { } // protected internal 접근 제한자 protected internal static void protected_internal_method() { } // private protected 접..
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..