자료구조

[CS 지식의 정석] 기초지식

PONI 2023. 8. 1. 10:48
반응형

클래스

클래스(Class)란 객체(Object)를 만들어 내기 위한 틀이며 만들어 낼 객체의 속성과 메서드의 집합을 담아놓은 것

 

객체

객체란 클래스로부터 만들어지는 실체, 클래스로 선언된 변수를 객체라 한다.

 

인스턴스

인스턴스(Instance)란 객체가 메모리에 할당이 된 상태이며 런타임에 구동되는 객체를 말합니다. 객체와 같은 의미로 쓰이기도 합니다. AWS의 클라우드의 가상서버 의미로도 쓰입니다.


Static

쓰이는 이유 :

static 키워드는 클래스의 인스턴스가 아닌 클래스에 속하며 클래스의 변수, 메서드 등을 공유하는데 사옹됩니다. 이를 통해 해당 클래스로 만들어지는 객체사이에서 중복되는 메서드, 속성을 효율적으로 정의할 때 쓰입니다.

단점:

static 키워드로 선언된 변수, 블록, 메서스 등은 선언과 동시에 미리 heap영역이 아닌 Method area 메모리 영역에 할당이 되며 프로그램이 종료될 때까지 GC에 의해 메모리가 회수되지 않기 때문에 만약 클래스가 객체로 쓰이지 않는다면 메모리 낭비를 불러올 수 있습니다.

 

ex) Class A, Class B를 코드에 사용하지 않더라도 메모리에 선언되어 메모리 낭비됩니다.


오버로딩(Overloading)

이름이 같아도 매개변수 개수, 타입, 순서를 다르게 해서 같은 이름으로도 여러 개의 함수를 정의할 수 있는 것을 말합니다. 이는 프로그램의 유연성을 높이고 결과적으로 코드를 깔끔하게 하는 효과가 있으며 같은 클래스 내에서 사용합니다.

오버라이딩(Overriding)

상위 클래스가 가지고 있는 메서드를 하위 클래스가 재정의를 하는 것을 말합니다. 상속 관계 클래스에서 사용되며 static, final로 선언한 메서드는 오버라이딩이 불가능합니다.

 

why? 

static 메서드:
static 메서드는 클래스 레벨에서 정의되는 메서드로, 인스턴스와 관련이 없이 클래스 자체에 속합니다. static 메서드는 클래스의 모든 인스턴스가 공유하는 메서드입니다. 그러므로 static 메서드는 클래스와 관련하여 정의되기 때문에 인스턴스에서 오버라이딩하는 것이 아니라 클래스 레벨에서 직접 호출되기 때문에 오버라이딩이 불가능합니다.

final 메서드:
final 메서드는 하위 클래스에서 변경되거나 오버라이드되지 못하도록 명시적으로 제한하는 메서드입니다. final 키워드가 메서드 앞에 사용되면 해당 메서드는 하위 클래스에서 재정의(오버라이드)할 수 없습니다. final 메서드는 상속되는 클래스에서 메서드의 동작을 변경하는 것을 방지하기 위해 사용됩니다.

반응형