static

Trace·2024년 7월 29일
0

Computer-Science

목록 보기
8/10

static이란

static 키워드는 클래스의 인스턴스가 아닌 클래스 자체에 속하며 클래스의 변수, 메서드 등을 공유하는데 사용됨
이를 통해 해당 클래스로 만들어지는 객체사이에서 중복되는 메서드, 속성을 효율적으로 정의할 때 쓰이며 단순히 전역변수가 아니라 클래스내의 static키워드로 선언하여 이 클래스의 객체들끼리 사용되는 메서드 또는 속성이다 라는것을 나타내주는 명시성이라는 장점이 생기기 때문에 사용 함

즉 static 키워드를 사용해 정의된 메서드는 클래스를 통해서 사용 가능하지, 인스턴스를 통해 사용은 불가능 함

단점

static 키워드로 선언된 변수, 블록, 메서드 등은 선언과 동시에 메모리에 할당 됨 따라서 클래스가 객체로 쓰이지 않더라도 메모리에 할당되기 때문에 메모리 낭비가 될 수 있음

(JAVA)
heap 영역이 아닌 method area 메모리 영역에 할당되며 프로그램이 종료 될 때까지 GC(garbege collector)에 의해 메모리가 회수되지 않기 때문에 만약 클래스가 객체로 쓰이지 않는다면 메모리 낭비를 불러올 수 있다

예시 코드

class Person {
	constructor(name = "alanwalker", IQ = 100, str = 100) {
		this.name = name;
		this.IQ = IQ;
		this.str = str;
		}

	levelup() {
		this.IQ++;
		this.str++;
		console.log(this.name + "의 지능과 힘이 증가했습니다! " + this.IQ + " / " + this.str);
		}
		
		static add(a, b) {
    return a + b;
  }
}

const a = new Person();
a.levelup();
const b = new Person("홍철", 1, 1000);
b.levelup();

정적 메서드나 정적 프로퍼티를 정의할때 사용 함

정적메서드는 클래스의 인스턴스가 아닌 클래스 자체에 속한 메서드

위 코드에서

//정적메서드는 이런식으로 사용 함
Person.add();

//인스턴스메서드는 클래스를 사용해서 or 생성자 함수를 사용해서
const a = new Person();//인스턴스르 만들고 변수에 할당해서
a.levelup();//그 변수에 메서드를 호출해서 사용

정적메서드와 인스턴스메서드의 차이

정적메서드

정적메서드는 보통 클래스 레벨에서 공통적으로 사용되는 유틸리티 함수나 특정 인스턴스에 종속되지 않은 메서드를 정의할 떄 사용

인스턴스 메서드

인스턴스 메서드는 특정 인스턴스에 종속된 동작을 정의할 때 사용

profile
개발하는사람

0개의 댓글