Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- 클라우드에서 도커 실행하기
- 투포인터알고리즘
- GCP
- 코딩테스트
- 버블정렬
- 자바
- 11659
- 백준 11659
- Array.asList
- 알고리즘
- Spring MVC 구성요소
- Spring MVC 동작원리
- MySQL
- List.of
- 스택
- 인텔리제이
- 프로그래머스
- 성능테스트툴
- OOP
- vm인스턴스생성
- Spring Web MVC
- java
- String.valueOf()
- 구간합구하기
- 싱글톤패턴
- 백준
- 재귀함수
- 재귀와반복문
- 코드스테이츠
- 코드스테이츠 백엔드
Archives
- Today
- Total
순간을 기록으로
[Java] 객체 지향 프로그래밍 질문들 본문
안녕하세요. 이번 시간에는 기술 면접을 본다고 가정하고 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)
- 힙 영역은 인스턴스가 생성되는 공간입니다.
- 또한 인스턴스 변수도 이곳에서 생성됩니다.
- 메소드 영역(Method Area)
- 생성자(constructor)는 무엇인가요?
- 생성자란 1.인스턴스 생성시 호출되는 2.인스턴스 변수를 초기화하는 메소드입니다. 객체를 생성할 때 반드시 생성자 호출이 발생합니다.
- 생성자(constructor)는 왜 사용할까요?
- 생성자를 사용함으로써 코드의 생산성을 올릴 수 있습니다.
- 생성자(constructor)가 되려면 어떤 조건을 만족해야 되나요?
- 첫 번째로 클래스명과 생성자명이 같아야 합니다.
- 리턴 타입이 존재하지 않아야 합니다.
- 오버로딩(Overloading)이란 무엇일까요?
- 메소드 오버로딩이란 하나의 클래스 안에서 이름이 같은 메소드를 여러 개 정의하는 것 말합니다.
- 오버로딩(Overloading)을 하려면 어떤 조건을 만족해야 할까요?
- 메소드 이름이 같아야 합니다.
- 매개변수 갯수 또는 타입이 달라야 합니다.
- 참고: 반환형은 상관이 없습니다.
- 오버로딩(Overloading)의 장점은 무엇인가요?
- 비슷한 기능을 하는 메소드를 하나의 이름으로 모아 기억하기 쉽습니다.
- this와 this()의 차이점은 무엇인가요?
- this
- this는 인스턴스 자신을 가리키는 참조변수입니다.
- 인스턴스 변수명과 매개변수명이 같을 때 구분하기 위해 사용합니다.
- 모든 메서드 안에는 인스턴스를 가리키는 this 참조변수가 존재합니다.
- this()
- this()는 생성자입니다.
- 생성자 안에서 다른 생성자를 호출할 때 사용합니다.
- 반드시 생성자 첫 줄에 위치해야 합니다.
- 생성자 오버로딩시 코드를 줄여주는 장점을 가집니다.
- this
'Development > JAVA' 카테고리의 다른 글
[Java] 다형성(polymorphism) (0) | 2022.05.16 |
---|---|
[Java] - 상속(Inheitance), 캡슐화(Encapsulation) 질문들 (0) | 2022.05.12 |
[Java] 배열을 복사하는 방법 (0) | 2022.05.08 |
[Java] 오버라이딩이란 무엇이고 왜 사용할까? (0) | 2022.04.21 |
[Java] JDK, JRE, JVM는 차이점은 무엇일까? (0) | 2022.04.18 |
Comments