Programming Language/C#27 [C#] 중첩 클래스 중첩 클래스 - 클래스 안에 선언되어 있는 클래스를 말한다. 선언하는 문법은 매우 간단하다. 클래스 안에 클래스를 선언하는 것이 전부이기 때문이다. 중첩 클래스가 다른 클래스와 다른 점이 있다면, 자신이 소속되어 있는 클래스의 멤버에 자유롭게 접근할 수 있다는 것이다. private 멤버에도 접근 가능하다. 선언 위와 같이 중첩 클래스를 선언하는 문법은 매우 간단하다. 클래스 안에 클래스를 선언하는 것이다. 객체를 생성하거나 객체의 메서드를 호출하는 방법도 보통의 클래스와 다르지 않다. 중첩 클래스에서 자신의 소속 클래스 멤버의 접근하는 예제이다. 중첩 클래스를 이용하는 이유 클래스 외부에 공개하고 싶지 않은 형식을 만들고자 할 때 현재의 클래스의 일부분처럼 표현할 수 있는 클래스를 만들고자 할 때 다른.. 2019. 5. 18. [C#] 오버라이딩 오버 라이딩 - 클래스의 상속 관계에서 사용하는 개념으로 다른 의미로 재정의 하는 것을 의미한다. 메서드를 오버 라이딩하기 위해서는 조건이 필요한데, 오버 라이딩을 할 메서드가 virtual 키워드로 한정되어 있어야 한다는 것이다. 예제 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 using System; using static System.Console; using System.Collections; namespace AS { class ArmorSuite { public virtual voi.. 2019. 5. 18. [C#] 상속 상속(Inheritance) - 클래스는 다른 클래스로부터 유산을 물려받을 수 있다. 클래스에게 있는 유산이란 필드나 메서드, 프로퍼티 같은 멤버들을 말한다. 객체 지향 프로그래밍에서는 물려받는 클래스(파생 클래스)가 유산을 물려줄 클래스를 지정한다. 형식 class 기반 클래스 { // 멤버 선언 } class 파생 클래스 : 기반 클래스 { // 아무 멤버를 선언하지 않아도 기반 클래스의 모든 것을 물려받아 갖게 된다. // private로 선언된 멤버는 제외! } 또한 파생 클래스는 기반 클래스로부터 물려받은 멤버들 외에 고유의 메서드와 멤버를 추가해서 사용하게 된다. 이것은 파생 클래스가 기반 클래스 위에 새로운 멤버를 "얹어" 만든 것이기 때문이다. 파생 클래스의 생성 과정을 통해서도 확일 할 .. 2019. 5. 18. [C#] 접근 한정자 접근 한정자 - 감추고 싶은 것은 감추고, 보여주고 싶은 것은 보여줄 수 있도록 코드를 수식하며, 필드, 메서드를 비롯해 프로퍼티 등 모든 요소에 대해 사용 가능. C#에서 제공하는 접근 한정자는 모두 여섯 가지이다. public - 클래스 내부/외부 모든 곳에서 접근 가능. protected - 클래스의 외부에서는 접근할 수 없지만, 파생클래스에서는 접근가능. private - 클래스의 내부에서만 접근할 수 있다. 파생 클래스에서도 접근이 불가능. internal - 같은 어셈블리에 있는 코드에서만 public으로 접근할 수 있다. 다른 어셈블리에 있는 코드에서는 private와 같은 수준의 접근성을 가진다. protected internal - 같은 어셈블리에 있는 코드에서만 protected로 접근.. 2019. 5. 18. [C#] 정적 필드와 메소드 static - 사전적으로 '정적'이라는 뜻을 갖고 있다. 움직이지 않는다는 뜻이며, C#에서 static은 메서드나 필드가 클래스의 인스턴스가 아닌 클래스 자체에 소속되도록 지정하는 한정자이다. static 속성, 필드 정적(static) 속성 및 필드는 [클래스명. 필드명]과 같이 사용한다. Non static 필드들은 클래스 인스턴스를 생성할 때마다 메모리에 매번 새로 생성하게 되는 반면, static 필드는 프로그램 실행 후 해당 클래스가 처음으로 사용될 때 한번 초기화되어(프로그램 종료 시 해제) 계속 동일한 메모리를 사용하게 된다. 그렇다면 정적 필드를 만들어서 얻게 되는 이득은 무엇일까? static으로 수식한 필드는 프로그램 전체에 걸쳐 하나밖에 존재하지 않는다. 프로그램 전체에 걸쳐 공유.. 2019. 5. 18. [C#] 생성자와 종료자 생성자 - 생성자는 클래스와 이름이 같고, 반환 형식이 없다. 생성자의 임무는 해당 형식(클래스)의 객체를 생성하는 것뿐이기 때문이다. 클래스를 선언할 때 명시적으로 생성자를 구현하지 않아도 컴파일러에서 생성자를 만들어준다. 생성자를 구현해야 할 때는 객체의 필드를 원하는 값으로 초기화하고 싶을 때이다. 또한 오버 로딩 가능. 종료자 - 종료자는 생성자와는 달리 매개변수도 없고, 한정자도 사용하지 않는다. 또한 오버 로딩도 불가능하며 직접 호출할 수도 없다. CLR의 가비지 컬렉터가 객체가 소멸되는 시점을 판단해서 종료자를 호출한다. 생성자 예제 ※ 컴파일러가 기본 생성자를 제공하지 않는 경우 - 생성자를 하나라도 직접 정의한다면 컴파일러는 매개 변수 없는 기본 생성자를 제공하지 않는다! 직접 생성자를 .. 2019. 5. 18. 이전 1 2 3 4 5 다음