JAVA

[Java] 기술면접 예상질문

cattaku 2021. 2. 2. 15:11

===== 객체지향 프로그래밍(oop)
데이터를 객체로 취급하여 프로그램에 반영한 것으로 객체와 객체간의 통신을 통해 프로그램이 구현된 것을 말한다. 
특징으로는 상속과 인터페이스(계층성), 다형성과 사용편의성(모듈화), 캡슐화, 정보은닉, 자료추상화, 동적 바인딩이 있다.

===== object (객체)
객체지향 프로그래밍에서 데이터(변수)와 그에 관련된 함수를 포함한 개념으로 개체, 속성, 메서드로 구성된 클래스의 인스턴스를 의미한다.

===== 오버로딩 & 오버라이딩(재정의)
오버로딩은 같은 이름의 메소드를 여러 개 정의한 것으로 매개 변수의 타입이 다르거나 개수가 달라야 한다. 
오버라이딩은 상속에서 나온 개념으로 상위 클르새의 메서드를 하위 클래스에서 재정의하는 것을 말한다.

===== interface
일종의 추상 클래스로 오직 추상메서드와 상수만을 멤버로 갖는다.
Implements 키워드를 사용하여 인터페이스에 정의된 메소드를 구현한다.
상속의 관계가 없는 클래스간 서로 공동되는 로직을 구현하여 쓸 수 있도록 한다.

===== Abstract
추상메소드를 하나 이상 가진 클래스, 자신의 생성자로 객체 생성 불가능하며, 하위 클래스를 참조하여 상위 클래스의 객체를 생성한다. 하위 클래스를 제어하기 위해 사용

===== extends
extends 자식 클래스는 부모 클래스의 기능을 사용한다.

===== implements
implements의 가장 큰 특징은 이렇게 부모의 메소드를 반드시 오버라이딩(재정의)해야 한다.
또한 이 implements는 다중상속을 대신해주며, interface 상속에 사용된다.
interface가 class를 사용할 땐 implements를 쓸 수 없다.
implements한 클래스는 implements의 내용을 다 사용해야 한다.

===== extends 와 implements 차이
extends는 클래스 한 개만 상속 받을 수 있다. implements는 여러개 사용 가능하다.
extends는 클래스를 확장하는 거고 implements는 인터페이스를 구현하는 것이다.
인터페이스와 보통 클래스의 차이는 인터페이스는 정의한 메소드를 구현하지 않아도 된다.
인터페이스를 상속받는 클래스에서 인터페이스에 정의된 메소드를 구현하면 된다.

===== JVM
자바는 java virtual machine 위에서 돌아가기 때문에 운영체제 종류에 상관없이 돌아간다.

===== DAO와 DTO
DAO(data access object) 실직적으로 db에 접근하는 객체를 말한다.
사용자는 자신이 필요한 Interface를 DAO에게 던지고 DAO는 이 인터페이스를 구현한 객체를 사용자에게 편리하게 사용 할 수 있도록 반환해준다.

===== DTO(Data Transfer Object)
일반적인 DTO는 로직을 갖고 있지 않다. 
순수한 데이터 객체이며 속성과 그 속성에 접근하기 위한 getter, setter 메소드만 가진 클래스를 말한다. 
간단히 계층 간의 데이터 전달에 사용하는 데이터 객체들을 말한다.