Machineboy空

동적(Dynamic) vs 정적(Static) 본문

Computer/개념

동적(Dynamic) vs 정적(Static)

안녕도라 2023. 9. 7. 13:39
  Static(정적) Dynamic(동적)
개념 한 번 정해 놓으면 변하지 않고 계속해서 유지 상황에 따라서 실시간으로 변하는 
언어에서 자료형이 고정되어 있는 언어로, 컴파일을 진행할 때 변수의 타입이 결정된다

JAVA, C, C#,C++, Kotlin 등
자료형이 그것을 처리할 함수에 따라 그때그때 바뀌는 언어

JavaScript, Python 등
메모리에서 stack heap
웹에서 이미 저장된 파일만을 클라이언트에게 전송하는 웹페이지 서버에 저장된 HTML파일이 그대로 브라우저에 나오는 것이 아니라 동적으로 만들어지는 웹페이지
배열에서 미리 정해놓은 공간만 고정적으로 사용할 수 있는 배열 

(C#에서 일반적인 배열)
리스트, 그때그때 공간을 생성, 삭제하는 것

(C#에서 리스트)
member즉, 클래스 안에서 선언된
field, method에서
정적 필드와 메소드

( 필드: 클래스 안에 선언한 변수)
static을 붙여주면,

클래스의 인스턴스가 아닌, 클래스 자체에 소속되도록 지정하는 한정자

static으로 수식한 필드는 프로그램 전체에 걸쳐 하나밖에 존재하지 않는다. 
비정적 메소드 ( =인스턴스 메소드 !=동적 메소드)

클래스에 소속되는 것이 아니라 인스턴스에 소속된다고 하여 인스턴스 메소드라고 한다.
//Instance field

class MyClass
{
	public int a;	//인스턴스 필드
    public int b;	//인스턴스 필드
}

public static void Main()
{
	MyClass obj1 = new MyClass();
    obj1.a = 1;		//인스턴스 생성해준 뒤 필드에 접근할 수 있다.
    obj1.b = 2;
    
    MyClass obj2 = new MyClass();
    obj2.a = 3;
    obj2.b = 4;
}
//Static field

class MyClass
{
	public static int a;	//정적(static) 필드
    public static int b;	//정적(static) 필드
}

public static void Main()
{
	MyClass.a = 1;
    MyClass.b = 2;
}

'Computer > 개념' 카테고리의 다른 글

상속: virtual , override  (0) 2023.09.21
괄호들: Generic [ ], ( ), { }, < >  (0) 2023.09.20
OOP 객체지향 4가지 원리  (0) 2023.09.08
Data Structure: Queue & Stack  (0) 2023.09.08
Class vs Object vs Instance  (0) 2023.09.07