본문 바로가기

분류 전체보기57

[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.
[C#] 클래스 클래스 (class) - 클래스(class)는 특정한 객체를 생성하기 위해서 메서드(Method), 속성(Property), 필드(Field), 이벤트(Event) 등을 멤버로 포함하는 소프트웨어 단위. 메서드(Method) - 클래스에서 실제 행동을 일으키는 코드 블록. 일련의 코드를 하나의 그룹으로 묶은 것. 객체지향 프로그래밍 관점에서 객체의 데이터 처리 방법을 추상화한 것이다. 속성(Property) - 클래스의 내부 데이터를 외부에서 사용할 수 있게 하거나, 외부에서 클래스 내부의 데이터를 간단하게 설정할 때 사용한다. 필드(Field) - 클래스 안에 선언된 변수들을 일컬어 필드라고 한다. 이벤트(Event) - 이벤트는 객체 내부의 특정 상태를, 혹은 어떤 일이 일어났다는 이벤트를 외부로 전.. 2019. 5. 18.