Machineboy空
동적(Dynamic) vs 정적(Static) 본문
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 |