CS지식

개발자 기본지식

띵지니 2023. 9. 2. 15:31

클래스(class)

  • 객체를 만들어 내기 위한 틀이며 만들어 낼 객체의 속성과 메서드의 집합을 담아놓은 것

 

객체(object)

  • 클래스로부터 만들어지는 실체, 클래스로 선언된 변수

 

인스턴스(instance)

  • 객체가 메모리에 할당이 된 상태이며 런타임에 구동되는 객체를 말함
  • 객체와 같은 의미로 쓰이기도 함
  • ex) AWS의 클라우드의 가상서버

 

static 키워드

  • 클래스의 인스턴가 아닌 클래스에 속하며 클래스의 변수, 메서드 등을 공유하는데 사용
  • 해당 클래스로 만들어지는 객체사이에서 중복되는 메서드, 속성을 효율적으로 정의할 때 사용
  • 선언을 하자마자 메모리가 올라가므로 메모리 낭비가 발생할 수 있음

 

오버로딩(Overloading)

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

 

오버라이딩(Overriding)

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

 

추상화

  • 복잡한 데이터, 구조, 시스템 등으로부터 핵심만을 가려내 덜 자세하게 만드는 것
  • 세부사항, 절차 등을 감추고 인터페이스 등을 만드는 것으로 복잡도를 낮추는 방법
  • 데이터 추상화
    • 어떠한 데이터들의 공통점을 모으고 차이점은 버림
    • ex) 고양이, 강아지, 원숭이 등의 객체들의 공통적인 특징을 묶어 동물이라는 카테고리로 카테고리화 시킴
  • 프로세스 추상화
    • 어떠한 내부 프로세스를 숨기는 것
    • ex) 데이터베이스가 어떻게 데이터를 저장하는지는 모르지만 단순하게 insert, upsert 등의 쿼리로 데이터를 저장할 수 있음