[객체지향 프로그래밍] 7장-2 Static (정적)

0

이것이 C#이다

목록 보기
9/26

7.4 static(정적) 필드와 메소드

"static은 사전적으로는 "정적"이라는 뜻을 담고있습니다. C#에서는 static은 메소드나 필드가 클래스의 인스턴스가 아닌 클래스 자체에 소속되도록 지정하는 한정자입니다."

인스턴스(실체)와 클래스(설계도)를 구별할 수 있으니 이제 저 설명이 무엇인지 파악할수있습니다.
한 프로그램에서 인스턴스는 여러개가 존재할 수 있으나,클래스는 유일하게 존재합니다.
예를 들면, Cat 클래스는 유일합니다. 하지만 Cat로 만든 인스턴스들은 여래개 일 수 있습니다.(nero,kitty..등등)
static으로 한정하지 않은 필드는 자동으로 인스턴스에 소속되며,static으로 한정한 필드는 클래스에 소속됩니다.

정적 필드를 만들어서 얻는 이득은? : static으로 수식한 필드는 프로그램 전체에 걸쳐 하나밖에 존재하지 않습니다.
따라서 프로그램 전체에 걸쳐 공유해야 하는 변수가 있다면 정적 필드를 이용하면 됩니다.

만약 static으로 필드를 설정해놨다면 아래 방식은 에러메시지를 나타냅니다.

정적메소드 역시 정적 필드와 마찬가지로 인스턴스가 아닌 클래스 자체에 소속됩니다. 정적메소드 역시 클래스의 인스턴스를 생성하지 않아도 호출 가능합니다.

반대로 인스터스를 생성해야만 호출할수있는 메소드를 인스턴스 메소드라고 합니다.(static을 수식하지 않은 기본 메소드)

보통 객체 내부의 데이터를 이용해야 하는 경우에는 인스턴스 메소드를 선언하고, 내부 데이터를 이용할 일이 없는 경우에는 별도의 인스턴스 생성없이 호출 할 수 있도록 정적 메소드를 이용합니다.

7.4.1 static(정적) 클래스

앞에서 본 static 변수와 메소드는 클래스 내부의 일부 멤버들만 정적으로 사용한 것이고
정적 클래스는 클래스 내부의 모든 멤버가 정적으로 정의되어야 합니다.

정적클래스는 객체를 생성할 수 없기때문에 퍼블릭 생성자를 가질 수 없고,
스태틱 생성자를 가지게 됩니다.
이 스태틱 생성자는 정적 변수를 초기화 할 때 사용하며 프로세스 시작시 자동 호출됩니다.

0개의 댓글