순간을 기록으로

[Java] 객체 지향 프로그래밍 질문들 본문

Development/JAVA

[Java] 객체 지향 프로그래밍 질문들

luminous13 2022. 5. 11. 16:57

OOP 주요 개념

 

안녕하세요. 이번 시간에는 기술 면접을 본다고 가정하고 OOP 개념을 질문을 통해서 잘 알고 있는지 확인해 보겠습니다.

 

  • 객체지향 프로그래밍(OOP)이란 무엇인가요?
    • 객체 지향 프로그래밍(Object Oriented Programming)의 약어로 프로그램을 명령어의 나열로 보는 시각에서 벗어나 객체들의 집합으로 보는 방법론을 말합니다.
  • 클래스(Class)란 무엇인가요?
    • 클래스는 객체를 생성하기 위한 설계도 입니다. 클래스를 사용해서 같은 구성의 속성(상태)과 행위(기능)를 갖는 객체를 만들 수 있습니다.
  • 객체(Object)는 무엇인가요?
    • 객체는 클래스로 구현한 대상을 말합니다.
  • 인스턴스(Instance)는 무엇인가요?
    • 인스턴스는 메모리에 할당된 객체입니다.
  • 필드(field)란 무엇인가요?
    • 필드는 인스턴스 변수클래스 변수(static 변수)를 말합니다.
  • 변수에는 어떤 종류들이 있나요?
    • 변수는 1.인스턴스 변수 2. 클래스 변수 3. 지역변수가 있습니다.
  • 3가지 변수는 어떻게 구분하나요?
    • 변수의 각 위치를 보면 변수의 종류를 구분할 수 있습니다.
  • static이란 무엇인가요?
    • 프로그램실행될 때 메모리에 할당되고 프로그램이 종료될 때 해제되는 것을 말합니다.
  • 인스턴스 변수는 무엇인가요?
    • 인스턴스 변수는 객체 안에서 속성으로 가지고 있는 변수입니다.
  • 클래스 변수는 무엇인가요?
    • 객체 안에서 가지고 있는 게 아닌 클래스에서 가지고 있는 변수입니다. 보통 공유되는 변수를 클래스 변수로 사용합니다.
  • JVM에 메모리 구조는 어떻게 생겼고 각 영역에 무엇이 저장되나요? 
    • 메소드 영역(Method Area)
      • 메소드 영역에는 클래스와 클래스 변수가 저장됩니다.
      • 프로그램이 실행 중 어떤 클래스를 만나면 JVM는 관련 xx.class 파일을 읽어 해당 클래스 정보를 메소드 영역에 저장합니다.
    • 호출 스택 영역(Call Stack Area)
      • 스택 영역에는 메소드와 지역변수, 매개변수가 저장됩니다.
      • 메소드 작업을 할 때 필요한 메모리 공간입니다.
      • 메소드가 호출되면 호출된 메소드를 위한 새로운 공간이 호출 스택 영역에 할당됩니다.
      • 메소드가 반환되면 할당되었던 공간은 반환됩니다.
    • 힙 영역 (Heap Area)
      • 힙 영역은 인스턴스가 생성되는 공간입니다.
      • 또한 인스턴스 변수도 이곳에서 생성됩니다.
  • 생성자(constructor)는 무엇인가요?
    • 생성자란 1.인스턴스 생성시 호출되는 2.인스턴스 변수를 초기화하는 메소드입니다. 객체를 생성할 때 반드시 생성자 호출이 발생합니다.
  • 생성자(constructor)는 사용할까요?
    • 생성자를 사용함으로써 코드의 생산성을 올릴 수 있습니다.
  • 생성자(constructor)가 되려면 어떤 조건을 만족해야 되나요?
    • 첫 번째로 클래스명과 생성자명이 같아야 합니다.
    • 리턴 타입이 존재하지 않아야 합니다.
  • 오버로딩(Overloading)이란 무엇일까요?
    • 메소드 오버로딩이란 하나의 클래스 안에서 이름이 같은 메소드를 여러 개 정의하는 것 말합니다.
  • 오버로딩(Overloading)을 하려면 어떤 조건을 만족해야 할까요?
    • 메소드 이름이 같아야 합니다.
    • 매개변수 갯수 또는 타입이 달라야 합니다.
    • 참고: 반환형은 상관이 없습니다.
  • 오버로딩(Overloading)의 장점은 무엇인가요?
    • 비슷한 기능을 하는 메소드를 하나의 이름으로 모아 기억하기 쉽습니다.
  • this와 this()의 차이점은 무엇인가요?
    • this 
      • this는 인스턴스 자신을 가리키는 참조변수입니다.
      • 인스턴스 변수명과 매개변수명이 같을 때 구분하기 위해 사용합니다.
      • 모든 메서드 안에는 인스턴스를 가리키는 this 참조변수가 존재합니다.
    • this()
      • this()는 생성자입니다.
      • 생성자 안에서 다른 생성자를 호출할 때 사용합니다.
      • 반드시 생성자 첫 줄에 위치해야 합니다.
      • 생성자 오버로딩시 코드를 줄여주는 장점을 가집니다.

 

Comments