티스토리 뷰
static 한정자
메소드나 필드가 클래스의 인스턴스가 아닌 클래스 자체에 소속되도록 지정하는 한정자
static한정자를 사용해서 얻는 효과는 static으로 수식한 필드는 프로그램 전체에 걸쳐 하나밖에 존재하지 않는다.
따라서 프로그램 전체에서 공유해야 하는 변수가 있다면 정적 필드를 이용하면 된다.
이와 반대되는 것을 인스턴스 메소드라고 한다. 왜냐하면 클래스의 인스턴스를 생성해야만 호출할 수 있기 때문이다.
class MyClass
{
public static void StaticMethod()
{
}
public void InstanceMethod()
{
}
}
객체 내부의 데이터를 이용해야 한다면 = 인스턴스 메소드
내부 데이터를 이용할 일이 없다 = 정적 메소드
this 키워드
this는 객체가 자신을 지칭할 때 사용하는 키워드
객체 내부에서 자신의 필드나 메소드에 접근할 때 사용하는 키워드.
class Cat
{
private string Name;
public Cat(string Name)
{
this.Name = Name;
}
}
위 코드와 같이 생성자에서 받는 매개 변수와 클래스가 지닌 필드가 이름이 동일할 때
this 키워드를 사용해서 모호성을 풀 수가 있다.
this 생성자
다음과 같은 클래스에 3개의 생성자가 오버로딩 되어있다.
class Cat
{
private int age;
private string Name;
private string Color;
public Cat()
{
this.age = 1;
}
public Cat(string Name)
{
this.age = 1;
this.Name = Name;
}
public Cat(string Name, string Color)
{
this.age = 1;
this.Name = Name;
this.Color = Color;
}
}
이렇게 되어있으면 중복되는 코드가 생기게 된다. 이것을 this() 생성자를 이용해 개선할 수 있다
class Cat
{
private int age;
private string Name;
private string Color;
public Cat()
{
this.age = 1;
}
public Cat(string Name) : this()
{
this.Name = Name;
}
public Cat(string Name, string Color) : this(Name)
{
this.Color = Color;
}
}
두번째 오버로딩 된 생성자에서 this() 키워드를 이용해 첫번째 생성자를 호출한다.
그리고 세번째 생성자는 this(Name)을 이용해 두번째 생성자를 호출한다.
세번째 생성자에서 매개변수로 Name을 받아주는 이유는 this(Name) 여기다가 넣기 위해서이다.
접근 한정자
객체 지향 프로그래밍에서 클래스에게 필요한 최소의 기능만을 노출하고 내부를 감출 것을 요구한다
이것을 은닉성 이라고 한다.
객체 지향 프로그래밍의 3대 특성
은닉성과 상속성, 그리고 다형성
클래스에 선언되어 있는 필드와 메소드 중 사용자에게 노출할 것과 노출시키면 안되는 것들이 있다.
특히 필든 상수를 제외하고는 감추는 것이 좋다.
접근 한정자는 감추고 싶은 것은 감추고 보여주고 싶은 것은 보여줄 수 있도록 코드를 수식한다.
C#에서는 총 5가지를 제공한다.
접근 한정자 | 설명 |
public | 클래스 내/외부 모든 곳에서 접근 가능 |
protected | 클래스의 외부에서는 접근 불가, 파생 클래스에서는 가능 |
private | 클래스의 내부에서만 접근 가능 |
internal | 같은 어셈블리에 있는 코드에 대해서만 pulic으로 접근 |
protected internal | 같은 어셈블리에 있는 코드에 대해서만 protected로 접근 |
클래스 내부에 필드를 선언할 때 접근 한정자로 수식하지 않은 것은 무조건 private로 자동 지정이 된다.
'C#' 카테고리의 다른 글
4. 클래스(4) - 오버라이딩 (0) | 2020.01.29 |
---|---|
4. 클래스(3) - 상속, is와 as (0) | 2020.01.28 |
4. 클래스(1) - 클래스란? , 생성자와 소멸자 (0) | 2020.01.28 |
3. 메소드란? (0) | 2020.01.28 |
2. 데이터의 종류(4) - object, 상수, 열거, var (0) | 2020.01.25 |
- Total
- Today
- Yesterday
- 변수
- 정렬
- C언어
- php
- GRID
- 문자열
- javascript
- 생활코딩#MySQL
- 언리얼엔진
- 언리얼엔진4
- inline
- 차이점
- 객체
- 네트워크 프로그래밍
- PHP&MySQL
- 기초
- 생활코딩
- css
- Link
- 안드로이드 스튜디오
- 알고리즘
- 글로
- 관계형데이터베이스
- TAG
- 생활코딩#동영상을#글로#html
- visual studio code
- 선택자
- 동영상을
- 조건문
- HTML
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |