pat coding
[JAVA] 자바 신입 면접 질문 모음! 본문
객체지향프로그래밍(OOP)이란?
프로그래밍에서 필요한 데이터를 추상화시켜 상태와 행위를 가진 객체를 만들고 그 객체들 간의 유기적인 상호작용을 통해 로직을 구성하는 프로그래밍 방법
특징
- 상속, 추상화, 캡슐화, 다형성 (상추캡다)
장점
- 코드 재사용 용이 (클래스를 가져올 수 있고, 상속을 통해 확장이 가능)
- 유지보수가 쉬움 (변수나 메서드만 수정하면됨)
- 대형 프로젝트에 적합 (클래스단위로 모듈화시켜서 여러명이 나눠서 개발할 수 있음)
단점
- 객체가 많으면 용량이 커짐
- 설계시 많은 시간과 노력이 필요
상속이란?
자식클래스가 상속받고 싶은 부모클래스를 선택해서 물려받는 것
기능의 일부분을 변경해야 할 경우 상속받은 자식클래스에서 해당 기능만 다시 수정하여 사용할 수 있게 하는 것
추상화란?
구체적인 사물들의 공통적인 특징을 파악해서 이를 하나의 개념(집합)으로 다루는 것
캡슐화란?
데이터들과 그 데이터를 처리하는 코드들을 하나의 단위로 묶는것
접근제어자를 통해 클래스외부에서 접근못하게하는 것
다형성이란?
서로 다른 클래스의 객체가 같은 메시지를 받았을 때 각자의 방식으로 동작하는 능력
접근제어자?
변수나 메서드를 선언할 때 접근 제어
접근제어자를 통해 캡슐화와 정보 숨김을 구현
- private : 같은 클래스 내에서만 접근 가능
- default : 같은 패키지 내에서만 접근 가능
- protected : 같은 패키지 내에서, 다른 패키지의 자손 클래스에서 접근가능
- public : 접근 제한이 전혀 없다
오버라이딩?
상속을 통해 부모클래스의 메서드와 같은 이름으로 매개변수를 재정의 하는 것
오버로딩?
같은 이름의 메소드를 여러개 정의 하는 것
매개변수 타입이 다르거나 개수가 달라야 함
추상클래스와 인터페이스?
공통점
- New 연산자로 인스턴스 생성 불가
- 프로토타입만 있는 메서드를 갖음
- 사용하려면 하위클래스에서 확장/구현 해야 함
차이점
- 사용하는 키워드가 다름
- 추상클래스는 일반 메서드를 사용할 수 있지만, 인터페이스는 메서드 선언만 가능
'Interview' 카테고리의 다른 글
디자인패턴이란? (1) | 2020.05.22 |
---|---|
[Spring] 스프링 개념정리 (0) | 2020.04.07 |
[RUBY & Rails]루비 와 레일즈 면접 예상질문 정리! (1) | 2019.11.15 |
[Spring] AOP(관점지향)와 OOP(객체지향)의 차이? (0) | 2019.11.14 |