2021. 3. 4. 11:02ㆍ기술면접 (Computer Science)
객체 지향 프로그래밍 (OOP) 란?
- Object Oriented Programing
- 컴퓨터 프로그래밍 패러다임 중 하나
- 프로그래밍에서 필요한 데이터를 추상화 시켜 상태와 행위를 가진 객체를 만들고, 그 객체들 간의 유기 적인 상호작용을 통해 로직을 구성하는 프로그래밍 방법
Java 특징
- 객체지향 프로그래밍 언어, JVM 위에서 실행 되기 때문에 플랫폼에 의존하지 않고 실행 가능
- 멀티 스레딩 지원
자바는 썬에서 제작 당시, "Write Once, Run Anywhere"이란 문구를 가지고 설명하였다. 이 의미는 '한 번 작성하면, JVM이 설치된 어느 기계에서든 동작할 수 있다' 이다. OS 종류가 다르면 고급언어(High-Level Language)가 컴파일 된 후 생성된 기계어 또한 다릅니다. 그러나 자바는 컴파일러로 바이트코드를 만들고, 바이트코드를 JVM를 통해 기계어로 번역하기 때문에 JVM만 있으면 어떤 OS에서든 같은 기계어로 번역을 합니다. 따라서 어떤 디바이스에서든 바이트코드와 JVM만 있으면 어디서든 동작이 가능한데, 이러한 특성을 Portability 이식성이라고 한다.
객체지향 장점
- 재사용성(상속) 높고 유지보수(함수) 용이
- 객체 단위로 코드를 작성하므로 협업에 최적화되어 있음 (대형 프로젝트에 적합)
객체지향 단점
- 처리속도가 상대적으로 느림
- 설계 시 많은 시간과 노력이 필요
객체지향 키워드 5가지
- 상속 (Inheritance)
- 캡슐 (Encapsulation)
: 인스턴스 변수를 private로 명시
: 관련 변수와 함수를 하나의 클래스로 묶는다.
: 외부에서 객체에 접근하는데 있어 정보를 숨겨 객체의 연산을 통해서만 접근이 가능하게 하는 것
: 메서드를 통해서만 접근하기 때문에, 메서드 파라미터로부터 안전하게 보호함
- 다형성 (Polymorphism)
: 오버로딩 / 오버라이딩 : 같은 자료형에 여러 가지 객체를 대입하여 다양한 결과를 얻어내는 성질
: 하나의 변수명, 함수명 등이 상황에 따라 다른 의미로 해석될 수 있는 것
- 추상 (Abstraction)
: abstract 키워드
- 클래스 + 인스턴스(객체)
클래스 (Class) 와 객체 (Object) 그리고 인스턴스 (Instance)
- 클래스
: 변수와 메소드를 가진 집합 [SW 세계를 구현하기 위한 설계도] / 메모리 할당 X
- 객체
: 클래스 타입으로 선언 되었을 때 [SW 세계에 구현할 대상]
- 인스턴스
: 객체가 메모리에 할당 되었을 때. [SW 세계에 구현된 실체]
추상클래스와 인터페이스
- 추상클래스
: Default Constructor O
: 추상,비추상 메소드 O
: 자식은 추상메소드만 강제 재정의
: extends
- 인터페이스
: Default Constructor X
: 추상 O
: 자식은 모두 재정의
: implement
생성자 (Constrcutor)
- 클래스와 같은 이름의 메소드. 명시적으로 생성자를 만들지 않아도 default로 만들어짐. 오버로드 가능
지역 변수와 인스턴스 변수 그리고 클래스 변수
- 클래스 변수 (Static Variable)
: 클래스 영역, 클래스가 메모리에 올라갈 때 메모리 할당
- 인스턴스변수 (Global Variable)
: 클래스 영역, 인스턴스가 생성 될 때 메모리 할당
- 지역변수(Local Variable)
: 메소드 영역, 변수 선언문이 수행 되었을 때 할당
오버로딩과 오버라이딩
- 오버로딩 (Overloading)
: 이름이 같은 메소드를 정의 [인자의 수나 자료형이 다른 경우 ]
- 오버라이딩 (Overriding)
: 부모의 메소드를 재정의 [메소드 이름 일치 / 아규먼트 일치 / 리턴타입 일치]
Public 과 Private Access Specifier
- Public
: 다른 패키지 안의 클래스도 접근 가능
- Private
: 해당 클래스 안에서만 접근 가능
접근제어자
- Public
: 모두 접근 가능
- protected
: 같은 클래스 / 같은 패키지 / 자손 클래스 접근 가능
- default
: 같은 클래스 / 같은 패키지 접근 가능
- private
: 같은 클래스 접근 가능
Java 8
- Lambda Expressions
- Method Reference
- Stream API : 간결하게 컬렉션의 데이터를 처리하는 기능
- Default Method
- Optional : 값을 Optional로 캡슐화하여 NullPointerException을 막는다.
- Completable
- Date와 Time
'기술면접 (Computer Science)' 카테고리의 다른 글
[CS] Technology Interview Preparation (3) (0) | 2021.04.10 |
---|---|
[CS] Technology Interview Preparation (2) (0) | 2021.04.06 |